2010-10-02 6 views
1

Je n'ai pas encore beaucoup utilisé le Zend Router, donc je ne sais pas si c'est difficile ou facile, mais je pense que Zend est flexible, donc il doit avoir un moyen de le faire facilement. Donc je crée un contrôleur Cont avec 2 actions actone et acttwo. Cela me donne naturellementRoutage flexible dans Zend

//the default index controller 
site.com/     
site.com/index/index  

//and my controller 
site.com/cont/index 
site.com/cont/actone 
site.com/cont/acttwo 

Est-il possible que je peux accéder à l'action actone qui est dans le contrôleur cont à l'aide d'une route qui ressemble à ceci

site.com/actone 

Je me rends compte que je pouvais obtenir ce regard en créant un contrôleur distinct appelé Actone et ce serait son action index mais cette action actone appartient logiquement au contrôleur Cont, donc je veux juste donner l'apparence de ce chemin.

Répondre

4

Vous pouvez créer un itinéraire personnalisé ...

Vïa de application.ini - Routeur d'application des ressources

resources.router.routes.route_title.route    = "/actone" 
resources.router.routes.route_title.defaults.controller = "cont" 
resources.router.routes.route_title.defaults.action  = "actone" 
resources.router.routes.route_title.type    = "Zend_Controller_Router_Route_Static" 

Ou en ajoutant un directement au routeur.

$router = Zend_Controller_Front::getInstance()->getRouter();  
$router->addRoute('route_title', new Zend_Controller_Rotuer_Route_Static(
    '/actone', 
    array(
     'controller' => 'cont', 
     'action'  => 'actone' 
    ) 
)); 
+0

Vous devez utiliser Zend_Controller_Router_Route_Static (http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.static) dans ce cas pour éviter de tirer des le moteur regexp – Maxence

+0

Droite. Ce n'était qu'un exemple rapide. Je vais l'ajouter pour aider la prochaine personne. –

+0

On notera également le plugin Jara static-route (http://github.com/jara/jara-base/blob/master/library/Jara/Plugin/StaticRoutes.php). –

2

Si vous pouviez faire de votre contrôleur Cont le contrôleur par défaut qui ferait probablement l'affaire. IIRC c'est dans Zend_Controller_Dispatcher_Abstract, il y a setDefaultControllerName() ainsi que setDefaultAction() et setDefaultModule().