Добавление Zend View Helper ко всем представлениям в приложении (в начальной загрузке) - PullRequest
2 голосов
/ 20 августа 2010

Я использую Zend Framework 1.6, следовательно, я не использую Zend_Application.

У меня есть простой, обычный View Helper (расширяющий Zend_View_Helper_Abstract). Он прекрасно работает, пока я добавляю его в представление в моем контроллере действий. Но я хочу иметь возможность использовать его в каждом представлении в каждом модуле. Я подумал, что должно быть просто получить глобальное представление в моем файле начальной загрузки и сделать это:

$view->addHelperPath(PATH_VIEW_HELPERS, 'RT_View_Helper_');

Но я не могу получить объект $ view в моем файле начальной загрузки. Я тоже попробовал

$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
if (null === $viewRenderer->view) {
    $viewRenderer->initView();
}
$view = $viewRenderer->view; 
$view = new Zend_View(array('encoding'=>'UTF-8'));
$view->addHelperPath(PATH_VIEW_HELPERS, 'RT_View_Helper_');

Но это тоже не помогает. Я попытался поместить его в preDispatch () и postDispatch () моего boostrap (который является плагином фронт-контроллера).

У кого-нибудь есть мысли о том, как это сделать? Кажется, это должно быть так просто, но я не смог найти решение для него в течение двух дней.

Спасибо всем :) Али

Ответы [ 3 ]

4 голосов
/ 20 августа 2010

Если вы используете Zend_Layout, тогда что-то вроде этого должно дать вам Zend_View:

$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
// set helpers, doctype, etc...
0 голосов
/ 20 августа 2010

Вы можете сделать следующее в вашем "setup.php / bootstrap.php или любом другом файле"

$view = new Zend_View();
// add Helper Path 
$view->setHelperPath('/path/to/more/helpers', 'My_View_Helper');
0 голосов
/ 20 августа 2010

Я не совсем понимаю вашу проблему, но, на мой взгляд, вы можете зарегистрировать объект View в Zend_Registry

Zend_Registry::set('view', new Your_view);
...