2010-11-24 14 views
2

je les contrôleurs suivants dans mes modules ..route framework Zend

UserController.php AdminUserController.php

maintenant la route pour le contrôleur d'administration va à: Module/admin/utilisateur (comportement par défaut)

Comment puis-je faire une route de sorte que tous admin- seront changés à:

/admin/module/utilisateur

Répondre

2

Vous wil Je dois écrire un itinéraire personnalisé.

Dans le code:

$front = Zend_Controller_Front::getInstance(); 
$router = $front->getRouter(); 
$route = new Zend_Controller_Router_Route(
    'admin/:module/user', array('controller' => 'admin-user')); 
$router->addRoute('module-admin-router', $route); 

Dans un fichier .ini (Je tiens à garder mes séparer de application.ini):

[routes] 
routes.module-admin-router.type = "Zend_Controller_Router_Route" 
routes.module-admin-router.route = "archive/:module/user" 
routes.module-admin-router.defaults.controller = "admin-user" 

Ensuite, vous devrez amorcer cette section d'application pour permettre les routes;

protected function _initRoutes() 
{ 
    // setup routes here. 
    $front = $this->getResource('frontcontroller'); 
    $router = $front->getRouter(); 
    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini', 'routes'); 
    $router->addConfig($config->routes); 

} 

Cette route détectera toute admin/module/requête de l'utilisateur et l'envoyer à l'AdminUserController dans le module correspondant.

Quelque chose comme ça devrait fonctionner. Maintenant, si les choses deviennent vraiment compliquées, vous aurez probablement besoin de creuser dans le routeur regex - mais c'est aussi simple que je peux le penser.

+0

Est-il possible de le faire dans le fichier application.ini avec le routeur regex: P car tous les modules doivent être routés de la même manière. – Chris

+0

a mis à jour ma réponse. –

+0

Merci, mais je n'arrive pas à obtenir des variables dans le contrôleur utilisé .. exemple: resources.router.routes.module-admin-router.route = "admin /: module /: contrôleur /: action" resources.router. routes.module-admin-router.defaults.controller = "admin-: controller" Ne fonctionne pas :( – Chris