2009-05-27 4 views
0

J'utilise le routeur mod-rewrite.Ajout d'une route vers un routeur dans Zend Framework

Je suis en train d'ajouter un itinéraire vers le routeur qui convertira l'adresse suivante:
baseurl/catégorie/aaa/MyController/myaction/param/valeur

être:
Controller = MyController
action = MonAction

--parameters--

catégorie = aaa

param = valeur

J'utilise les éléments suivants (ne fonctionne pas) dans mon bootstrap, _front est le frontController

$Router=$this->_front->getRouter(); 
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*'); 
$Router->addRoute('category', $CategoryRoute); 

L'erreur que je reçois est une exception routeur jeté quand je suis en utilisant l'aide Zend_View :: url() (avec ou sans lui donner le nom de la nouvelle route).
L'exception n'est levée que si j'ai baseurl/category/....

Qu'est-ce qui me manque? Ce qui m'a manqué:
Comme il y avait [catégorie] dans l'url, le routeur qui a été utilisé est celui défini ci-dessus.
Lorsque j'ai utilisé l'assistant url(), je n'ai donné aucune valeur à la [catégorie], donc il n'y avait pas de valeur pour cette clé dans l'url parts-> failure. Donner un défaut, le fait fonctionner.

Répondre

6

Vous devez inclure le/* comme suggéré par solomongaby. Si vous ne fournissez pas tous les paramètres requis (c'est-à-dire la catégorie, le contrôleur et l'action), vous devrez spécifier les valeurs par défaut.

Vous pouvez le faire comme suit:

$Router=$this->_front->getRouter(); 

$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*', 
    array(
     'controller' => 'index', 
     'action'  => 'index', 
     'category' => null 
    ) 
); 
$Router->addRoute('category', $CategoryRoute); 
2
$Router=$this->_front->getRouter(); 
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*'); 
$Router->addRoute('category', $CategoryRoute); 

Essayez d'ajouter un début de préciser l'existence d'extra params

+0

Je reçois une Zend_Controller_Router_Exception lorsque je tente d'utiliser l'assistant url(). –

+0

Essayé d'envoyer le nom du routeur, pas de changement: $ this-> url (array ('controller' => 'test'), 'category', true); –

+0

pouvez-vous me dire l'exception? –

0

Vous devez spécifier les paramètres par défaut lors de la création de la route (voir le poste de dcaunt) OU préciser tous des paramètres dans l'aide de vue url (catégorie, controleur et action)