Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
j'ai passé pas mal de temps à chercher la solution à mon problème mais je n'ai pas trouvé ce cas particulier sur le forum z-f... Voilà le truc :
- je passe ma variable de langue dans l'URL, la route default étant sous la forme :language/:controller/:action/*
exemple : fr/about/people
- j'ai des routes différentes, par exemple pour les news, qui sont :
:language/news/:id/:title (exemple fr/news/2/des-infos-fraiches)
:language/news/archives/:year (exemple fr/news/archives/2007)
:language/news/category/:cat (exemple fr/news/category/press-releases)
Voilà mon bootstrap :
/* Routes */ $router = $frontController->getRouter(); $request = new Zend_Controller_Request_Http(); $router->removeDefaultRoutes(); $router->addRoute('default', new Zend_Controller_Router_Route( ':language/:controller/:action/*', array('language' => null, 'controller' => 'index', 'action' => 'index'), array('language' => '\w\w') )); $router->addRoute('newscat', new Zend_Controller_Router_Route( ':language/news/category/:cat', array('language' => null, 'controller' => 'news', 'action' => 'index'), array('language' => '\w\w') )); $router->addRoute('newsarchive', new Zend_Controller_Router_Route( ':language/news/archives/:year', array('language' => null, 'controller' => 'news', 'action' => 'index', 'year' => date('Y')), array('language' => '\w\w') )); $router->addRoute('news', new Zend_Controller_Router_Route( ':language/news/:id/:title', array('language' => null, 'controller' => 'news', 'action' => 'view', 'title' => null), array('language' => '\w\w', 'id' => '\d+') ));
Quand je navigue sur l'ensemble du site, tout fonctionne, mais lorsque j'essaie d'accèder à une news par exemple, j'obtiens l'erreur suivante :
Fatal error: Uncaught exception 'Zend_Controller_Router_Exception' with message 'language is not specified' in C:\xampp\htdocs\monsite\library\Zend\Controller\Router\Route.php:235
Stack trace:
#0 C:\xampp\htdocs\monsite\library\Zend\View\Helper\Url.php(72): Zend_Controller_Router_Route->assemble(Array, false)
#1 C:\xampp\htdocs\monsite\library\Zend\View\Abstract.php(300): Zend_View_Helper_Url->url(Array, 'default')
#2 [internal function]: Zend_View_Abstract->__call(Array, Array)
#3 C:\xampp\htdocs\monsite\application\views\scripts\header.phtml(27): Zend_View->url('url', Array)
#4 C:\xampp\htdocs\monsite\library\Zend\View.php(46): include('C:\xampp\htdocs...')
#5 C:\xampp\htdocs\monsite\library\Zend\View\Abstract.php(769): Zend_View->_run(Array, 'default')
#6 C:\xampp\htdocs\monsite\application\views\scripts\error\error.phtml(1): Zend_View_Abstract->render('..\application in C:\xampp\htdocs\monsite\library\Zend\Controller\Router\Route.php on line 235
Des idées ? Faut-il utiliser plutôt Zend_Controller_Router_Route_Regex ?
Merci d'avance.
Dernière modification par Enops (22-05-2008 12:17:29)
Hors ligne
Mon problème est réglé : pour info, ce n'était pas la définition des routes qui était en cause, mais l'appel à l'helper url dans header.phtml (comme on peut le voir dans le Stack trace). Lorsque j'utilise url avec la route "default", je ne passais pas le paramètre "language" qui est obligatoire vu la définition de la route.
Merci aux utilisateurs sur #ZFTalk.
Hors ligne
Pages: 1