Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-01-2010 11:33:44

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

[Zend_Route] Probleme de controller

Bonjour,

Je cherche à optimiser les urls du projet de cms. Mais je rencontre certains problèmes.

Pour le moment, je cherche cherche à avoir une url de ce type http://url/contenu/id pour ensuite la transformer en http://url/contenu-id (mais cela viendra en temps et en heure).

la méthode init() de mon controller index du module par défaut, j'ai fais ceci :

Code:

    public function init() {
        $front = $this->getFrontController();
        $router = $front->getRouter();
        
        $route = new Zend_Controller_Router_Route(
            ':link/:idcontents',
               array(
                    'module' => 'public',
                    'controller' => 'index',
                    'action'     => 'index'));
       
        $router->addRoute('vitrine', $route);
    }

Les urls pointent de la façon suivante :

Code:

$this->url(array('link' => $link, 'idcontents' => $idcontents), 'vitrine', true);

Mais j'ai l'erreur suivante :

Code:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (acceuil-de-presentation)' in ...

Donc il cherche tout de même un controller.

Vous voyez pourquoi ?

Merci de votre aide.
Bien cordialement.

Dernière modification par nicko (24-01-2010 15:51:33)

Hors ligne

 

#2 24-01-2010 16:29:09

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend_Route] Probleme de controller

Tu dois ajouter ta route au routeur avant que la requête ne soit dispatcher, soit dans ton bootstrap soit dans un plugin.

Hors ligne

 

#3 24-01-2010 16:42:22

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [Zend_Route] Probleme de controller

Ah merci, bon du coup il faut que je revoie 2-3 choses point de vue organisation mais ça fonctionne.

Hors ligne

 

#4 24-01-2010 19:41:23

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [Zend_Route] Probleme de controller

Forcement, quand ça marche pour une chose, c'est n'est pas le cas pour une autre. Mais c'est les joies de la prog

Alors pour avoir des url de ce type http://url/contenu-id j'ai procédé de la façon suivante :

Code:

        $router = $front->getRouter();
        
        $route = new Zend_Controller_Router_Route_Regex (
        '(\w+-?)-(0-9)',
        array(
            'module' => 'vitrine',
            'controller' => 'index',
            'action'     => 'index'),
        array('link', 'idcontents'),
        '%s-%d');
       
        $router->addRoute('vitrine', $route);

Ce qui me semblais logique, mais j'ai la même erreur que tout à l'heure :

Code:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (acceuil-de-presentation-12)' in...

Pourtant pour les teste je suis dans bootstrap !

Est ce que l'erreur pourrais provenir du fait qu'il y ait des tirets dans la partie contenu ? Je ne sais pas.

PS: Ça ne vient pas du fait qu'il y ait des tirets dans le contenu. Je viens de vérifier.

Dernière modification par nicko (24-01-2010 19:48:33)

Hors ligne

 

#5 25-01-2010 11:03:58

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [Zend_Route] Probleme de controller

Bon problème résolu, j'ai replacer (\w+-?) par (.+) et hop la ça fonction.

Maintenant je cherche à faire cela dans un fichier ini. J'ai donc fait ceci :

Code:

routes.vitrine.type = "Zend_Controller_Router_Route_Regex"
routes.vitrine.route = "(.+)-(\d+)"
routes.vitrine.defaults.controller = "index"
routes.vitrine.defaults.action = "index"
routes.vitrine.map.1 = "link"
routes.vitrine.map.2 = "idcontents"

Puis dans le bootstrap j'ai fait ceci :

Code:

        $this->bootstrap('configs');
        $configs = $this->getResource('configs');

        $routers = new Zend_Controller_Router_Rewrite();
        $routers->addConfig($configs, 'routes');

Donc si je comprends bien, je ne devrais plus qu'a appeler la route "vitrine" de la façon suivante dans les liens :

$this->url(array('link' => $link, 'idcontents' => $idcontents), 'vitrine', true);

Mais j'ai l'erreur suivante qui me dit que "vitrine" n'est pas définit :

Code:

Fatal error: Uncaught exception 'Zend_Controller_Router_Exception' with message 'Route vitrine is not defined' in ...

(si vous voulez le reste de l'erreur, il faut me demander car je ne mets pas tout pour ne pas surcharger les post)

Voyer-vous pourquoi j'ai cette erreur ?

Merci

Hors ligne

 

#6 25-01-2010 14:32:52

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend_Route] Probleme de controller

fait un

Code:

Zend_Debug::dump($router);
ou
print_r($router);

Comme ça tu pourras vérifier que tes routes se sont ajoutées correctement.

Hors ligne

 

#7 25-01-2010 14:37:24

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [Zend_Route] Probleme de controller

Oui j'ai fais ceci il y a quelques temps dans mon bootstrap et voila ce que ça donne :

Code:

object(Zend_Controller_Router_Rewrite)#23 (7) {
  ["_useDefaultRoutes":protected] => bool(true)
  ["_routes":protected] => array(1) {
    ["vitrine"] => object(Zend_Controller_Router_Route_Regex)#25 (7) {
      ["_regex":protected] => string(10) "(.+)-(\d+)"
      ["_defaults":protected] => array(2) {
        ["controller"] => string(5) "index"
        ["action"] => string(5) "index"
      }
      ["_reverse":protected] => NULL
      ["_map":protected] => array(2) {
        [1] => string(4) "link"
        [2] => string(10) "idcontents"
      }
      ["_values":protected] => array(0) {
      }
      ["_isAbstract":protected] => bool(false)
      ["_matchedPath":protected] => NULL
    }
  }
  ["_currentRoute":protected] => NULL
  ["_globalParams":protected] => array(0) {
  }
  ["_chainNameSeparator":protected] => string(1) "-"
  ["_frontController":protected] => NULL
  ["_invokeParams":protected] => array(0) {
  }
}

Il a l'air de bien avoir tout pris en compte, même le nœud "vitrine"...

Dernière modification par nicko (25-01-2010 14:38:04)

Hors ligne

 

#8 25-01-2010 19:10:15

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [Zend_Route] Probleme de controller

Donc j'ai aussi essayer ceci mais j'ai une erreur différente :

Code:

        $this->bootstrap('FrontController');
        $front = $this->getResource('frontController');
        
        $this->bootstrap('configs');
        $configs = $this->getResource('configs');

        $router = $front->getRouter();
        $router->addConfig($configs, 'routes');

Et donc l'erreur :

Code:

Fatal error: Uncaught exception 'Zend_Controller_Router_Exception' with message 'Cannot assemble. Reversed route is not specified.' in ...

Pourtant de créer bien l'url comme dans les post précédents.

Hors ligne

 

#9 26-01-2010 09:48:10

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [Zend_Route] Probleme de controller

Je continue...

Sur quelques blogs, j'ai lu que de cette façon ça devait fonctionner.

Code:

    protected function _initRouter() {
        $this->bootstrap('FrontController');
        $front = $this->getResource('frontController');

        $this->bootstrap('configs');
        $configs = $this->getResource('configs');

        $router = new Zend_Controller_Router_Rewrite();
        $router->addConfig($configs, 'routes');
        $front->setRouter($router);

        return $router;
    }

mais j'ai cette erreur ci :

Code:

Fatal error: Uncaught exception 'Zend_Controller_Router_Exception' with message 'Cannot assemble. Reversed route is not specified.' in H:\wamp\www\cms\Core\Zend\Controller\Router\Route\Regex.php:162 Stack trace: #0 H:\wamp\www\cms\Core\Zend\Controller\Router\Rewrite.php(441): Zend_Controller_Router_Route_Regex->assemble(Array, true, true) #1 H:\wamp\www\cms\Core\Zend\View\Helper\Url.php(49): Zend_Controller_Router_Rewrite->assemble(Array, 'vitrine', true, true) #2 [internal function]: Zend_View_Helper_Url->url(Array, 'vitrine', true) #3 H:\wamp\www\cms\Core\Zend\View\Abstract.php(340): call_user_func_array(Array, Array) #4 [internal function]: Zend_View_Abstract->__call('url', Array) #5 H:\wamp\www\cms\Core\View\Helper\TypeMenuUrl.php(11): Zend_View->url(Array, 'vitrine', true) #6 [internal function]: Zend_View_Helper_TypeMenuUrl->typeMenuUrl(Object(Zend_Db_Table_Row)) #7 H:\wamp\www\cms\Core\Zend\View\Abstract.php(340): call_user_func_array(Array, Array) #8 [internal function]: Zend_View_Abstract->__call('typeMenuUrl', A in H:\wamp\www\cms\Core\Zend\Controller\Router\Route\Regex.php on line 162

J'ai mis toute l'erreur. Peut être que ça vous parlera plus qu'a moi wink

Hors ligne

 

#10 17-12-2010 11:58:12

kami66
Membre
Date d'inscription: 18-10-2010
Messages: 12

Re: [Zend_Route] Probleme de controller

J'ai le même problème, avez vous resolu le votre et comment ? A mon avis, cela semble être un pb. de synchro avant le dispatch.

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