Создание общего класса контроллера для модульной структуры 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 от любого из ваших контроллеров модулей.