Контроллер модулей вызова из приложения Bootstrap
Я задавал такой вопрос ранее, но я считаю, что это не так (этот вопрос был просто общим).
Я реализовал Zend_Navigation.
Для меню я использовал DB Table для хранения пунктов меню и сделал рекурсию на Array-s, чтобы получить дерево пунктов меню.
Все это действие происходит в моем модуле под названием Меню. Внутри у меня есть:
Menu --
Controllers --
IndexController.php
Models--
DbTable--
Menu.php
Bootstrap.php
внутри контроллера индекса у меня есть function menuGenerator($menu_id)
Поэтому, следуя инструкциям по Zend_Navigation, меню инициализируется в начальной загрузке приложения.
Моя функция внутри начальной загрузки приложения выглядит следующим образом:
public function _initMenus() {
$menuArray = new Menu_IndexController();
$outArray = $menuArray->menuGenerator(1);
$mainmenu = new Zend_Navigation($outArray);
$this->view->navigation($mainmenu);
}
и это дает мне ошибку:
Fatal error: Class 'Menu_IndexController' not found in D:\Server\xampp\htdocs\project\application\Bootstrap.php on line 8
Итак, есть идеи, как мне сделать так, чтобы он работал правильно?
PS можно ли одновременно запустить 2 новых меню? например: мне нужно 1. главное меню 2. меню нижнего колонтитула (любая ссылка на статью была бы хороша)
2 ответа
Весьма необычно вызывать метод контроллера во время начальной загрузки, поскольку существует много задач начальной загрузки, от которых зависят действия контроллера. В вашем случае метод контроллера menuGenerator()
на самом деле это не действие, так что, вероятно, это не будет проблемой.
Тем не менее, это все еще достаточно необычно, что я бы переместить menuGenerator()
метод в свой собственный класс. Затем вызовите эту операцию как в Bootstrap, так и в вашем контроллере.
По умолчанию автозагрузчик Zend Framework не загружает контроллеры так же, как загружает другие компоненты (модели, помощники представления, формы и т. Д.), Поэтому PHP выдает ошибку, говоря, что не может найти класс. Самый быстрый способ обойти это - явно включить контроллер в Bootstrap.php. Следующее должно работать:
public function _initMenus() {
require_once('./Controllers/IndexController.php');
$menuArray = new Menu_IndexController();
$outArray = $menuArray->menuGenerator(1);
$mainmenu = new Zend_Navigation($outArray);
$this->view->navigation($mainmenu);
}