Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-09-2009 12:27:07

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Routage dans un Zend_Controller_Action

Bonjour,

J'ai mis en place un routage sur mon front controller qui fonctionne très bien.

Code:

$oRouter = $oZCF->getRouter();
$route = new Zend_Controller_Router_Route(
    'ws/:action/:port',
    array('controller' => 'ws')
);
$oRouter->addRoute('ws', $route);

$oZCF->dispatch();

Désormais pour être organiser le tout, j'aimerais mettre chaque routage dans le controller concerné.
J'ai essayé faire le routage dans la méthode init du controller mais sans succès.

Code:

public function init() {
        $oRouter = $this->getFrontController()->getRouter();
        $route = new Zend_Controller_Router_Route(
            'ws/:action/:port',
            array('controller' => 'ws')
        );
        $oRouter->addRoute('ws', $route);
        $this->getFrontController()->dispatch();
    }

Comment s'y prendre ?

Merci.

Hors ligne

 

#2 16-09-2009 12:32:57

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Routage dans un Zend_Controller_Action

C'est pas possible, ton site doit connaître le routage pour pouvoir envoyer vers le bon contrôleur. Tu es donc obligé de définir tes routages avant les contrôleurs.

(et puis les routages sont lus lors du dispatch, donc avant qu'un quelconque contrôleur ne soit instancié).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 16-09-2009 15:23:51

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: Routage dans un Zend_Controller_Action

On ne peut donc pas faire de "sous réseau de routage" ?
Ca ne me semblait pas illogique de mettre ça dans le init du controller.

Si l'on possède un site de gros ampleur, tout se retrouve dans le front controller... bonjour la maintenabilité.
Quelqu'un peut-il me confirmer qu'il n'existe pas d'autre moyen.

Merci

Hors ligne

 

#4 17-09-2009 12:34:18

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: Routage dans un Zend_Controller_Action

Je confirme que l'unique moyen à ma connaissance est de définir les routes avant que le router parse l'URL. En tout dernier lieu elles peuvent donc être ajoutées dans la méthode RouteStartup d'un plugin, mais pas après.

Tu ne peux pas demander à un contrôleur d'initialiser les routes étant donné qu'un contrôleur est construit seulement après qu'une URL soit parsée (que les routes enregistrées ont été étudiées par le router donc).

Question maintenabilité une idée peut être de configurer les routes dans la config, en les classant par catégories, et laisser le plugin de ressources Zend_Application_Resource_Router se charger de les ajouter.

Hors ligne

 

#5 17-09-2009 14:21:53

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Routage dans un Zend_Controller_Action

Salut,

C'est logique de vouloir les routes pour un controlleur dans le controlleur.

J'aurais tendance à placer les routes dans des fichiers XML et ré-écrire le plugin de ressource "Zend_Application_Resource_Router".
Ensuite c'est facile de découper comme on veut les XML et donc facile à maintenir.

Sinon, un truc de gros bourrin serait de faire de la réflection et de parcourir les controllers pour trouver celui auquel la route correspond. Grâce à de la PHPDoc par exemple smile

A+ benjamin.

Dernière modification par Delprog (17-09-2009 14:22:36)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#6 18-09-2009 13:49:45

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Routage dans un Zend_Controller_Action

A la limite il reste la possibilité de faire un plugin qui bidouille les routes dans le routeStartup().

Pour ce qui est de la "maintenabilité du frontController", a toi de faire une classe et de toute découpé en méthode, ou simplement d'utiliser une fichier de config pour tes routes avec/sans Zend_Application.

Bien lire la doc est important, toutes les solutions y sont exposés.

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