【问题标题】:Zend framework admin module and other modulesZend 框架管理模块和其他模块
【发布时间】:2011-01-19 00:04:27
【问题描述】:

我想根据我的需要构建一个基于 Zend 框架的 CMS,它具有带有身份验证的 admin 模块和其他可以使用的模块(页面、用户、新闻)作为基于应用程序需求的插件模块。

我希望每个模块都有特定的前端和后端代码,以便可以像访问它一样访问它。 http://localhost/mycms/pages/view/5 通过调用 Pages 控制器,view 操作从 pages 模块查看特定页面。每个插件的后端都需要与管理员绑定并需要身份验证,可以像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);  

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

【问题讨论】:

    标签: zend-framework module reusability


    【解决方案1】:

    看看前端控制器插件,它们可能会给你更多的灵活性...

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

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多