2012-01-28 2 views
0

php i ont méthode pour ajouter des routes:Zend Route Regex et contrôleur invalide



    public function addRoutes() 
      { 
       $front = Zend_Controller_Front::getInstance(); 
       $redirect = $front->getRouter(); 
       $router = new Zend_Controller_Router_Route_Regex( 
                  "p\/(a-zA-Z0-9)\.htm", 
                 array(
                 'controller'=>'page', 
                 'action'=>'index', 
                  1=>'ja.htm' 
                 ), 
                 array(1 => 'page_name') 
         ); 
       $route2 = new Zend_Controller_Router_Route_Regex("(a-zA-Z0-9)\.html", 
         array('controller'=>'page', 
          'action'=>'index', 
          1=>'ja.html'), 
         array(1=>'page_name')); 
       $redirect->addRoute('pages',$router); 
       $redirect->addRoute('hmtmled',$route2); 
       $front->setRouter($redirect); 


      } 


J'ai essayé d'entrer dans l'url: p/ja.htm mais j'obtiens l'erreur: contrôleur non valide spécifié (p). Je sais que c'est pour raison de route par défaut, mais comment changer cela?

+0

Je ne pense pas que vous devez échapper à la barre, il ne fonctionne donc si vous modèle regex est juste 'p/(a-zA-Z0-9) \. htm'? –

+0

Votre motif accepte uniquement un caractère alphanum_single_ après le 'p /'. N'avez-vous pas besoin de ce qui suit à la place (notez le qualificatif + +): 'p/(a-zA-Z0-9) + \. Htm' –

+0

même si mon motif est p/(a-zA-Z0-9) + \. htm je reçois la même erreur, même avec des options comme p/(\ w + \ d +) \. htm échoue toujours, donc je ne pense pas que son erreur d'expression rationnelle – Axxxon

Répondre

0

Est-ce une partie de la méthode de votre classe Bootstrap? Si oui, êtes-vous sûr qu'il est exécuté? Rappelez-vous, les méthodes Bootstrap qui sont appelées automatiquement sont celles de la forme _initXXX() (notez le trait de soulignement principal).

En outre, comme Fontaine note astucieusement @ Tim dans les commentaires, l'expression rationnelle doit être:

p/([0-9A-Za-z]+)\.htm 
0

vous essayez de supprimer les routes par défaut:

//excerpt from ZF reference 24.5.4. Default Routes... If you do not want this particular default route in your routing schema, you may override it by creating your own 'default' route (i.e., storing it under the name of 'default') or removing it altogether by using removeDefaultRoutes():

// Remove any default routes 
$router->removeDefaultRoutes();