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'
    )
    )
);
È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top