У меня есть сложная HTML-форма с 10 вкладками на моем сайте. Когда пользователь переходит на страницу с методом формы getFormAction () называется
public function getFormAction()
{
$productId = $this->_getParam('productId');
if (!empty($productId)) {
//Get model and populate form
//...
$form = new Form_OnixProduct2();
$form->populate($model);
} else {
$form = new Form_OnixProduct2();
}
$currentFeedFormSession = new Zend_Session_Namespace('currentFeedSession');
$currentFeedFormSession->form = $form;
$this->view->form = $form;
}}
В этом действии я инициализировал Zend_Form, сохранил его в переменной сеанса, и в представлении я выведу только одну первую вкладку. Все остальные вкладки отображаются с помощью запросов ajax — с призывом к действию outputOnixTabAction
public function outputOnixTabAction()
{
$this->_helper->layout->disableLayout();
$tabName = $this->_getParam('tabName');
$currentFeedFormSession = new Zend_Session_Namespace('currentFeedSession');
$this->view->form = $currentFeedFormSession->form;
$this->view->tabName = $tabName;
}
Моя проблема в том, что отображается только первая вкладка. Когда я делаю ajax-запросы для отображения других вкладок, я получаю следующую ошибку:
Message: Zend_Session::start() - /otms/vendor/zendframework/zendframework1/library/Zend/Loader.php(Line:134): Error #2 include_once(): Failed opening 'Zend/View/Helper/OutputComplexForm.php' for inclusion
Хотя этот помощник успешно загружен в виде первой вкладки. Zend_Session :: start () start вызывается в моем пользовательском плагине контроллера — для каждого запроса я проверяю роль пользователя с помощью следующего кода:
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity()) {
$userRole = $auth->getIdentity()->user_type;
} else {
$userRole = 'guest';
}
и функция hasIdentity () приводит к команде Zend_Session :: start (true) в строке файла Zend / Session / Namespace.php 143.
Если у вас есть идеи, пожалуйста, поделитесь со мной.
Вот часть автозагрузчика из моей начальной загрузки:
protected function _initAutoload()
{
$loader = new Zend_Application_Module_Autoloader(
array(
'namespace' => '',
'basePath' => APPLICATION_PATH
)
);
return $loader;
}
Также я узнал, что если я переименую вспомогательный класс из
Zend_View_Helper_OutputComplexForm
в
My_View_Helper_OutputComplexForm
и добавить строку
resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/views/helpers"
в файле application.ini все работает нормально. Но я не понимаю, что же такого особенного в префиксе Zend_?
Задача ещё не решена.
Других решений пока нет …