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)