Zend Routes Konflikt
-
20-09-2019 - |
Frage
Ich habe 2 benutzerdefinierte Routen definiert. Eins für threads/:id/:name
und der andere für threads/tags/:tagName
Der zweite Konflikt mit dem ersten, denn wenn ich beide aktiviere, bricht die ersten Pausen und Leckereien :id
buchstäblich als Handlung, nicht befolgen \d+
Anforderung (ich habe auch versucht, reine Regex -Routen zu verwenden, siehe unten).
Aktion "1" existiert nicht und wurde nicht in __call () gefangen ()
Ich habe versucht, die Reihenfolge der Strecken neu zu arrangieren, aber wenn ich das tue, dann die threads/tags/:tagName
erfasst den Tagnamen nicht richtig.
Ich habe auch versucht, Standardrouten zu deaktivieren, aber die Routen funktionieren danach immer noch nicht richtig.
Hier ist meine Route Init -Funktion:
protected function _initRoutes() {
$fc = Zend_Controller_Front::getInstance();
$router = $fc->getRouter();
$router->addRoute(
'threads',
new Zend_Controller_Router_Route('threads/:id/:name',
array(
'controller' => 'threads',
'action' => 'thread',
),
array(
'id' => '\d+'
)
)
);
$router->addRoute(
'threads',
new Zend_Controller_Router_Route('threads/tags/:tagName',
array(
'controller' => 'threads',
'action' => 'tags',
),
array(
'tagName' => '[a-zA-Z]+'
)
)
);
}
Ich habe auch versucht, eine reine Regex -Route zu verwenden, war aber erfolglos, höchstwahrscheinlich, weil ich es falsch gemacht habe:
$router->addRoute(
'threads',
new Zend_Controller_Router_Route_Regex(
'threads/(\d+)/([a-zA-Z]+)',
array(
'controller' => 'threads',
'action' => 'thread',
),
array(
1 => 'tagName',
2 => 'name'
)
)
);
Lösung
Gelöst.
Ah, albern ich. Das erste Argument für Addroute muss ein eindeutiger Name sein und nicht direkt dem Controller entspricht, wie ich angenommen habe.
Vielen Dank an d__asmoka, lutinvert auf #Zftalk. Ich werde das so schnell wie möglich akzeptieren (Minimum ist 2 Tage).