Создание общего класса контроллера для модульной структуры Zend

Я использую модульную структуру Zend для проекта. У меня ниже структура каталогов

 application/
   modules/
    default/
        controllers/
            IndexController.php
            FooController.php
        models/
        views/
            scripts/
                index/
                foo/
            helpers/
            filters/
    blog/
        controllers/
            IndexController.php
        models/
        views/
            scripts/
                index/
            helpers/
            filters/
    news/
        controllers/
            IndexController.php
            ListController.php
        models/
        views/
            scripts/
                index/
                list/
            helpers/
            filters/

Я хочу создать общий класс контроллера, который я бы расширил в контроллере всего модуля

например, я хочу создать класс, как показано ниже

 class My_Common extends Zend_Controller_Action 
 {

  public function init()
  {

  }
}

Во всем контроллере модуля я хочу расширить его как

 class News_IndexController extends My_Common
 {
     public function init()
 {

 }

 }

Как я мог этого добиться. Пожалуйста помоги. Я пытался создать его в контроллере по умолчанию, но он не работает.

2 ответа

Вы можете легко добиться этого, добавив пространство имен my в папку библиотеки. И если вы работаете с библиотекой zend, структура папок будет выглядеть так:

the_common_folder_structure /... /
библиотека/
    Зенд /
    myNamespace/
      контроллер /
        common.php

Затем в ваших модулях просто расширьте MyNamespace_Controller_Common.

Я бы сделал это, добавив папку "My" в директорию библиотеки, а затем скопировал структуру класса Zends, например:

Создать файл

library/My/Controller/Action.php с именем класса: My_Controller_Action

Убедитесь, что вы включили: autoloaderNamespaces.my = "My_" в файл application.ini, это включает в себя каталог My для вашего автозагрузчика.

После этого вы сможете расширить My_Controller_Action от любого из ваших контроллеров модулей.

Другие вопросы по тегам