2010-12-16 4 views
0

Avec ce code:problème avec Zend et addRoute()

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute(
    'test', 
    new Zend_Controller_Router_Route(
     '/test/:action/:type/:id', 
     array(
      'controller' => 'admin' 
     ) 
    ) 
); 

http://app/test/param1/param2/param3 -> OK

http://app/test/param1/param2/ -> FAIL

Dans le second cas, l'application ne reconnaît pas param2.

Il semble que l'application a besoin du param3 pour lire la param2 ...

Comment puis-je faire?

Merci!


test avec le code de @RageZ

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute(
    'test', 
    new Zend_Controller_Router_Route(
     '/test/:action/:type/:id', 
     array(
      'controller' => 'admin', 
      'id' => 0 
     ), 
     array(
      'id' => '\d+' 
     ) 
    ) 
); 

http://app/test/ -> OK

http://app/test/some -> OK

http://app/test/some/more -> FAIL

http://app/test/some/more/andmore -> OK

Des idées?

+1

le dernier code est manquant par défaut pour le type ...;) –

Répondre

1

essayer de donner une valeur par défaut pour tout

$frontController = Zend_Controller_Front::getInstance(); 
$router = $frontController->getRouter(); 
$router->addRoute(
    'test', 
    new Zend_Controller_Router_Route(
     '/test/:action/:type/:id', 
     array(
      'controller' => 'admin', 
      'action' => 'index', 
      'type' => 'sometype', 
      'id' => 0 
     ), 
     array(
      'id' => '\d+' 
     ) 
    ) 
); 

Juste essayé votre code dans un projet de test et que ce soit réglé, il espère que cela fonctionne pour vous!

1

Vous devez indiquer une valeur par défaut si le paramètre est facultatif. Rien à voir avec votre question, mais c'est une bonne pratique d'utiliser le troisième param de addRoute. Zend Framework vérifie que la valeur des paramètres correspond au format que vous avez spécifié, dans ce cas je suppose que id est un entier.

+0

et quoi de neuf avec "type"? – joanballester

+0

@joanballester: à vous de savoir si vous avez besoin d'une valeur par défaut et spécifiez le format. dans ton cas, l'url fonctionnerait – RageZ

+0

Je suis désolé, mais ... je ne peux pas! Je vais continuer à essayer (j'ai édité le post) – joanballester