2011-01-19 120 views
0

我想基于Zend框架满足我的需求,其具有管理模块与身份认证等模块,来构建一个CMS(页面,用户,新闻),它可以作为插件模块基于应用需求。Zend框架管理模块和其他模块

我希望每个模块都具有特定的前端和后端代码,以便可以像访问它们一样进行访问。 http://localhost/mycms/pages/view/5通过调用页面控制器,视图操作来查看从页面模块的某一页。每个插件的后端需要绑定到管理员并需要身份验证,可以像http://localhost/mycms/admin/pages/add那样访问它。

的问题是,我找到了解决方案涉及除默认路由和编写自定义路由对于像插件模块内的每个控制器动作:

$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); 

你有什么想法,我怎样才能避免这种自定义路由?

回答

0

看一看前端控制器插件,他们可以给你更多的灵活性...

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(); 
     ... 
    } 
}