Модуль администрирования Zend Framework и другие модули - PullRequest
0 голосов
/ 19 января 2011

Я хочу создать CMS на основе Zend Framework для своих нужд, в котором есть модуль admin с аутентификацией и другие модули ( страницы, пользователи, новости ), которые можно использовать как плагинмодули, основанные на потребностях приложения.

Я хочу, чтобы у каждого модуля был определенный код внешнего и внутреннего кода, чтобы к нему можно было обращаться, например, http://localhost/mycms/pages/view/5 для просмотра определенной страницы со страниц . модуль, вызывая Pages controller, view action.Бэкэнд для каждого плагина должен быть привязан к администратору и требовать аутентификации, к нему можно получить доступ как 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 голосов
/ 19 января 2011

Посмотрите на плагины фронт-контроллера, они могут дать вам больше гибкости ...

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