Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-05-2008 11:18:22

Enops
Nouveau membre
Date d'inscription: 21-05-2008
Messages: 2

[Résolu][Zend_Router][1.5] Routes et langue dans l'URL

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 :

Code:

/* 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. wink

Dernière modification par Enops (22-05-2008 12:17:29)

Hors ligne

 

#2 22-05-2008 12:20:33

Enops
Nouveau membre
Date d'inscription: 21-05-2008
Messages: 2

Re: [Résolu][Zend_Router][1.5] Routes et langue dans l'URL

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages