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
+
0
-

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
+
0
-

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)

batko
Člen | 219
+
0
-

děkuju moc, pomohlo to :-)