Skoro rovnaké Route-y – rozlišovanie

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lukass445
Člen | 19
+
0
-

Zdravím,

narazil som na menší problém. V mojej route továrni mám 3 Route-y a prvé dve sa mi bijú(nefungujú nezávisle), ako keby ich nette nevedel rozoznať. Prvá funguje správne, no stále sa aplikuje aj pri pokuse o použitie tej druhej.

createRouter() z RouterFactory

public function createRouter()
	{
		$router = new RouteList();
		$router[] = new Route('<presenter>[/<action>]/<postId>/<title>',
                                array('presenter' => 'Post',
                                    'action' => 'show',
                                    'title' => array(
                                        Route::FILTER_IN => function($title)
                                        {
                                            return $title;
                                        },
                                        Route::FILTER_OUT => function($title)
                                        {
                                            return Strings::webalize($title, NULL, FALSE);
                                        }
                                )),'Post:show'
                            );
		$router[] = new Route('<presenter>[/<action>]/<smartphoneId>/<title>',
                                array('presenter' => 'Smartphone',
                                    'action' => 'show',
                                    'title' => array(
                                        Route::FILTER_IN => function($title)
                                        {
                                            return $title;
                                        },
                                        Route::FILTER_OUT => function($title)
                                        {
                                            return Strings::webalize($title, NULL, FALSE);
                                        }
                                )),'Smartphone:show'
                            );
		$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
		return $router;
	}

screen z ladičky: http://i.imgur.com/oVOV3GU.png
za každú pomoc ďakujem

Editoval Lukass445 (20. 8. 2014 16:30)

Caine
Člen | 216
+
+1
-

Tak router nema jak rozeznat, o kterou z rout se jedna, protoze jsou v podstate stejny (minimalne pro IN). Bud si ty routy nejak odlisit maskou (napr placnu <presenter>[/<action>]/m-<smartphoneId>/<title> ci <presenter>[/<action>]/10000<smartphoneId>/<title>) nebo ty postId/smartphoneId napojit na hledani v DB..

PS: ta specifictejsi, pokud bys pouzil variantu s upravenou masku, by mela byt driv..

Editoval Caine (20. 8. 2014 17:23)

David Matějka
Moderator | 6445
+
+1
-

a potrebujes dynamicky presenter? ze bys tam dal pouze

post[/<action>]/<postId>/<title>

respektive

smartphone[/<action>]/<smartphoneId>/<title>

a btw, ten treti parametr ‚Post:show‘ muzes smazat, tahle syntaxe se dava jako druhy parametr kdyz nepouzijes pole s komplexnejsimi pravidly (jako to delas..)

Lukass445
Člen | 19
+
0
-

matej21 napsal(a):

a potrebujes dynamicky presenter? ze bys tam dal pouze

post[/<action>]/<postId>/<title>

respektive

smartphone[/<action>]/<smartphoneId>/<title>

a btw, ten treti parametr ‚Post:show‘ muzes smazat, tahle syntaxe se dava jako druhy parametr kdyz nepouzijes pole s komplexnejsimi pravidly (jako to delas..)

diky moc, rozdiel medzi dynamickym presenterom a normalnym vpisanim slova do linky (natvrdo) si este musim zistit, no toto riesenie vyriesilo moj problem :)