Я работаю над реструктуризацией своего проекта Zend 1.12. У меня есть пара помощников:
Я помещаю их в / application / views / helpers
Имена классов
Как я понимаю, если у вас есть префикс Zend_View_Helper, вам не нужно добавлять какие-либо конфиги в application.ini
Теперь, когда я пытаюсь загрузить любую страницу (даже те, которые не используют помощников), я получаю сообщение об ошибке:
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 (include_path='/otms/application/../library:/otms/application/../library/phpseclib0.3.1:/otms/application/../library/Amazon:/otms/application/../library/USPS:/otms/application/../library/Composer:/otms/library:/otms/vendor/phpseclib/phpseclib/phpseclib:/otms/vendor/zendframework/zendframework1/library:.:/usr/share/php:/usr/share/pear')
Я что-то пропустил?
Я обнаружил, что ошибка произошла после вызова функции
$startedCleanly = session_start(); //line 482
в файле /Zend/Session.php. После этого вызова свойство Zend_Session_Exception :: $ sessionStartError содержит описанное сообщение об ошибке. Я до сих пор не вижу связи между началом сеанса и инициализирующим помощником вида.
Для классов приложений, которые вы пишете — вещи, которые появляются внутри ./application/*
— обычно не должно быть в Zend_
псевдо-пространство имен. Скорее, они должны быть в appnamespace
, как настроено в ./application/config/application.ini
,
Пространство имен по умолчанию — «Application_», поэтому помощник вида называется MyHelper
обычно хранится в файле ./application/views/helpers/MyHelper.php
:
class Application_View_Helper_MyHelper extends Zend_View_Helper_Abstract
{
public function myHelper()
{
// do your stuff here
}
}
Обратите внимание, что имя класса в верхнем верблюжьем регистре MyHelper
и метод нижнего верблюда myHelper()
,
По вашему мнению, вы можете вызвать помощника вида с помощью:
<?php
$output = $this->myHelper();
// Do something with $output
С этими соглашениями по пространству имен, имени класса и расположению / имени файла, а также синтаксису вызова загрузчик плагинов View должен иметь возможность находить, загружать и выполнять ваш метод view-helper.
Других решений пока нет …