jak nastavit Router::FILTER_OUT
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- vosy
- Člen | 532
ahoj, mam tento router:
$frontRouter[] = $route = new Route('[<locale cs|en|de>/]<slug>/<action>/<id>',
array(
'presenter'=>'Homepage',
'action'=>'default',
'locale'=>'cs',
'id'=>NULL,
NULL => array(
Route::FILTER_IN => function($params) {
......
return $params;
},
Route::FILTER_OUT => function($params) {
???????
return $params;
}
)
));
jak nastavit $params ve FILTER_OUT aby pro presenter Kontakty se zobrazilo uri „kontakty-nasi-firmy“
- vosy
- Člen | 532
zkousim:
$frontRouter[] = new Route('[<locale cs|en|de>/]<slug>/<action>/[<id>]',
array(
'presenter'=>'Homepage',
'action'=>'default',
'locale'=>'cs',
'id'=>NULL,
NULL => array(
Route::FILTER_IN => function($params) {
unset($params['slug']);
$params['presenter'] = 'Contacts';
return $params;
},
Route::FILTER_OUT => function($params) {
$params['presenter'] = 'nase-kontakty';
return $params;
}
)
));
Presenter se zobrazi spravny ale kdyz mam $presenterUrl = new Url($this->link(‚:Front:Contacts:‘));
tak vytvoreny odkaz je „No route for Front:Contacts:default(locale=cs)“
problem mozna bude v „<slug>“ protoze kdyz to zmenim na „<presenter>“ tak odkaz se vytvori, ale kdyz tam necham <presenter> tak uri se mi prevede na nazevpresenteru tzn nase-kontakty na ⇒ NaseKontakty
Editoval vosy (3. 6. 2014 20:09)
- David Matějka
- Moderator | 6445
Zkus na FILTER_OUT nastavit presenter na Homepage
aby to
matchnulo tu routu a nastav odpovidajici slug
- David Matějka
- Moderator | 6445
Route::FILTER_OUT => function($params) {
$params['slug'] = ....;
$params['presenter'] = 'Homepage';
return $params;
}
- vosy
- Člen | 532
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('[<locale cs|en|de>/]<slug>/<action>/[<id>]',
array(
'presenter'=>'Homepage',
'action'=>'default',
'locale'=>'cs',
'id'=>NULL,
NULL => array(
Route::FILTER_IN => function($params) {
unset($params['slug']);
$params['presenter'] = 'Contacts';
return $params;
},
Route::FILTER_OUT => function($params) {
$params['slug'] = 'nase-kontakty';
$params['presenter'] = 'Homepage';
return $params;
}
)
));
vysledek:
„No route for Front:Contacts:default(locale=cs)“