route na specificky presenter pri viacerych routach
- stewestw
- Člen | 42
ahojte,
chcel by som poprosit o radu. potreboval by som vytvorit routeList, kde by sa
uvodna stanka nacitavala v tvare <url>/shortcode jazyka> a dalsiu,
ktora bude staticka a bude mat tvar <url>/<shortcode jazyka>/menu,
ktora bude smerovat do specifickeho presenteru.
nedari sa mi to neako sprevadzkovat.
routy mam zadefinovane nasledovne:
// front routes
$router[] = $frontSubRouter = new RouteList('Front');
// link to menu
$frontSubRouter[] = new Route('<lang=en>/menu', array(
'module' => 'Ourfresh',
'presenter' => 'Menu',
'action' => 'default',
'lang' => $this->locate->getLanguageShortCode()
));
// base front route
$frontSubRouter[] = new Route('<lang=en>', array(
'module' => 'Ourfresh',
'presenter' => 'Homepage',
'action' => 'default',
'lang' => $this->locate->getLanguageShortCode()
));
// link to pages
$frontSubRouter[] = new Route('<lang>/<id>', array(
'module' => 'Ourfresh',
'presenter' => 'Page',
'action' => 'default',
'lang' => $this->locate->getLanguageShortCode(),
'id' => array(
Route::VALUE => 'gallery',
Route::FILTER_IN => function($id){
$return = $this->database->table('nette_content_lang')->where('seo_alias', $id)->where('lang_id', $this->locate->getLanguage())->fetch();
if(isset($return->content_id)){
return $return->content_id;
}
else{
return '';
}
},
Route::FILTER_OUT => function($id){
$return = $this->database->table('nette_content_lang')->where('content_id', $id)->where('lang_id', $this->locate->getLanguage())->fetch();
if(isset($return->seo_alias)){
return $return->seo_alias;
}
else{
return '';
}
}
)
vopred dakujem za pomoc.
- David Matějka
- Moderator | 6445
nedari sa mi to neako sprevadzkovat
prosim, trochu se snaz. Co to dela? ktera routa funguje, ktera ne? jak se to chova? dochazi k presmerovani.....?
- stewestw
- Člen | 42
ahoj,
trosku som sa s tym pokkrocil:
// front routes
$router[] = $frontSubRouter = new RouteList('Front');
// homepage
$frontSubRouter[] = new Route('[<lang>]', array(
'module' => 'Ourfresh',
'presenter' => 'Homepage',
'action' => 'default',
'lang' => 'en'
));
// link to menu
$frontSubRouter[] = new Route('<lang>/menu', array(
'module' => 'Ourfresh',
'presenter' => 'Menu',
'action' => 'default'
));
// link to pages
$frontSubRouter[] = new Route('<lang>/<id>', array(
'module' => 'Ourfresh',
'presenter' => 'Page',
'action' => 'default',
'id' => array(
Route::VALUE => 'gallery',
Route::FILTER_IN => function($id){
$return = $this->database->table('nette_content_lang')->where('seo_alias', $id)->where('lang_id', $this->locate->getLanguage())->fetch();
if(isset($return->content_id)){
return $return->content_id;
}
else{
return '';
}
},
Route::FILTER_OUT => function($id){
$return = $this->database->table('nette_content_lang')->where('content_id', $id)->where('lang_id', $this->locate->getLanguage())->fetch();
if(isset($return->seo_alias)){
return $return->seo_alias;
}
else{
return '';
}
}
)
));
problem je v tom, ze mi routu <lang>/menu ignorovalo. potreboval by som, aby pri tejto route nasmerovalo na specificky presenter a namiesto toho stale bralo do uvahy len kratsiu variantu <lang>/ . neviem ci je toto dobre riesenie, ale teraz mi to zbehlo. budem velmi vdacny za vsetky rady.
Editoval stewestw (21. 5. 2015 11:07)