Zend Percorsi conflitto
-
20-09-2019 - |
Domanda
Ho definito 2 percorsi personalizzati. Una per threads/:id/:name
e l'altro per threads/tags/:tagName
tuttavia la seconda conflitti con il primo perché se attivo sia poi le prime pause e tratta :id
letteralmente come azione, non obbedire il requisito \d+
(Ho anche provato ad utilizzare percorsi regex puro, vedi sotto) .
Azione "1" non esiste e non è stato intrappolati in __call ()
Ho provato a ri-organizzare l'ordine dei percorsi, ma se lo faccio poi il doesnt threads/tags/:tagName
catturare correttamente il tagName.
Inoltre ho provato a rendere invalido percorsi predefiniti, ma gli itinerari ancora non adeguatamente lavoro dopo.
Ecco la mia funzione di percorso init:
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]+'
)
)
);
}
Ho anche provato ad utilizzare un itinerario regex puro ma senza successo, molto probabilmente perché l'ho fatto di sbagliato:
$router->addRoute(
'threads',
new Zend_Controller_Router_Route_Regex(
'threads/(\d+)/([a-zA-Z]+)',
array(
'controller' => 'threads',
'action' => 'thread',
),
array(
1 => 'tagName',
2 => 'name'
)
)
);
Soluzione
risolto.
Ah, mi sciocca. Il primo argomento di addroute deve essere un nome univoco, e non corrisponde direttamente al controllore ho assunto.
Grazie a d__asmoka, lutinvert su #zftalk. Accetterò questo come appena posso (minimo è di 2 giorni).