Как упомянуто в руководстве Zend Framework , я создал базовый контроллер.
Подклассы контроллера действий
По замыслу Zend_Controller_Action должен быть разделен на подклассы вДля того, чтобы создать контроллер действия.Как минимум, вам нужно будет определить методы действия, которые контроллер может вызвать.
Помимо создания полезных функций для ваших веб-приложений, вы также можете обнаружить, что вы повторяете большую часть тех же самых методов установки или служебных методов вваши различные контроллеры;если это так, то создание общего базового класса контроллера, расширяющего Zend_Controller_Action, может решить такую избыточность.
Но оказывается, что исключения не вызываются должным образом из базы ... Чтобы воспроизвести это, создайтеfile:
/ path / to / workspace / library / Joe / Controller.php
Затем:
class Joe_Controller extends Zend_Controller_Action
{
public function init()
{
Throw new Zend_Exception('test', 500);
parent::init();
}
}
Затем в каталоге вашего контроллера IndexController.php расширяетсяthe base:
class IndexController extends Joe_Controller
{
Вы обнаружите, что исключение необработано.
Если, тем не менее, вы не расширяете базовый контроллер, а затем сгенерируйте исключение в init или preDispatch, онобудет перехвачен и отправлен на ErrorController.
У кого-нибудь есть идеи по получению исключений, перехваченных из базового контроллера?
Спасибо.
ОБНОВЛЕНИЕ ДЛЯ ЭТОГО РЕШЕНИЯДРУГОЙ ПУТЬ
Изучив различные статьи и официальную документацию о том, как структурировать каталоги, я решил поместить базовый контроллер в библиотеку / Joe / ... номожет быть, это часть проблемы ... в руководстве нет руководства о том, как назвать и разместить базовый контроллер.Что делают эксперты с базовым контроллером?
Еще одно обновление
Еще раз взглянув на мой код и читая в сети, кажется, что люди, которым это предлагается, должны:
абстрактный класс Joe_Controller_Action расширяет Zend_Controller_Action.
За исключением изменения, это не решило проблему ...
Теперь, учитывая, что есть статьи, предлагающие использовать базовые контроллеры, включая руководствоБудет ли это рассматриваться как ошибка в Zend Framework?
Для репликации просто добавьте исключение Zend_Exception любого типа в базовый init или preDispatch.Представьте, что вы опрашиваете базу данных там (что я и делаю) ... и база данных не работает.Нет ошибок контроллера.Это не очень хорошая ситуация, если я что-то не так делаю.
Я подозреваю, что это новая ошибка ... Я не помню эту проблему до Zend_Application, и с тех пор я использую базовый контроллерZF 1.5.