Zend框架管理模块和其他模块

时间:2011-01-19 00:04:27

标签: zend-framework module reusability

我想根据我的需要构建基于Zend Framework的CMS,其中包含带有身份验证的 admin 模块以及可以使用的其他模块(页面,用户,新闻)作为基于应用需求的插件模块。

我希望每个模块都有特定的前端和后端代码,以便可以像访问它一样访问它们。 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);  

您有什么想法可以避免这种自定义路由吗?

1 个答案:

答案 0 :(得分: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();
        ...
    }
}