router pro slug u fotografií 123-<slug>
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- batko
- Člen | 219
ahoj,
mám následující problém. U níže uvedeného kódu mi router vygeneruje adresu
/photo/1–
nikoliv
/photo/1-nejaky-text
nevíte kde by mohl být problém???
<?php
$photoRoutes = array(1=>"nejaky-text",2=>"dalsi-text");
$router[] = new Route('[<locale=cs cs|en>/]photo/<id>-[<slug>]', array(
"module" => "front",
"presenter" => "watermark",
"action" => "detail",
"slug" => array(
Route::FILTER_OUT => function ($id) use ($photoRoutes) {
return $photoRoutes[$id];
},
?>
děkuji
Editoval batko (11. 10. 2014 21:06)
- japlavaren
- Člen | 404
ahoj,
to spravanie je v poriadku. tvoja routa totiz dostane v $id prazdny string a kedze ho v $photoRoutes nenajde, vrati NULL (co sa prelozi ako empty string)
to $id sa totiz neberie ako $id z routy, ale dostanes parameter, na ktorom aktualne pracujes
zmen si to asi takto:
<?php
$photoRoutes = array(1=>"nejaky-text",2=>"dalsi-text");
$router[] = new Route('[<locale=cs cs|en>/]photo/<id .+>', array(
"module" => "Front",
"presenter" => "Watermark",
"action" => "detail",
"id" => array(
Route::FILTER_OUT => function ($id) use ($photoRoutes) {
return $id . '-' . $photoRoutes[$id];
},
Route::FILTER_IN => function ($id) use {
return substr($id, 0, strpos($id, '-'));
},
),
));
?>
(pisane z hlavy)
PS: nazvy modulov a presenterov treba pisat velkym zaciatocnym pismenom (Front, Watermark)
Editoval japlavaren (11. 10. 2014 22:17)