2011-01-19 5 views
0

Je veux construire un CMS basé sur Zend Framework pour mes besoins qui a module d'administration avec l'authentification et d'autres modules (pages, les utilisateurs, les nouvelles) qui peut être utilisé en tant que modules de plug-in basé sur les besoins d'application.module admin framework Zend et d'autres modules

Je veux que chaque module ait un code d'interface et de backend spécifique, de sorte qu'il puisse être accédé comme par ex. http://localhost/mycms/pages/view/5 pour afficher une certaine page à partir du pages module en appelant Pages contrôleur, voir action. Le backend pour chaque plugin doit être lié à l'administrateur et nécessite une authentification, il peut être consulté comme http://localhost/mycms/admin/pages/add.

Le problème est que la solution que je trouve implique la suppression des routes par défaut et l'écriture de routage personnalisé pour chaque action du contrôleur à l'intérieur des modules de plug-ins tels que:

$router->removeDefaultRoutes(); 

    $route = new Zend_Controller_Router_Route_Static(
     'admin/pages/add', 
     array(
     'module' => 'pages', 
     'controller' => 'Pages',   
     'action' => 'add' 
    ) 
); 

    $router->addRoute('pages_pages_add', $route); 

    $route = new Zend_Controller_Router_Route_Regex(
     'pages/view/(\d+)', 
     array(
     'module' => 'pages', 
     'controller' => 'Pages',   
     'action' => 'view' 
    ), 
     array(
     '1' => 'page_id' 
    ) 
); 

    $router->addRoute('pages_pages_view', $route); 

Avez-vous des idées comment je peux éviter ce routage personnalisé?

Répondre

0

Jetez un oeil à Front Controller Plugins, ils peuvent vous donner plus de flexibilité ...

http://framework.zend.com/manual/en/zend.controller.plugins.html

class Controller_Plugin_Foo extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch(Zend_Controller_Request_Abstract $request) 
    { 
     $frontController = Zend_Controller_Front::getInstance(); 
     ... 
    } 
}