Как добавить каталог помощника представления (фреймворк Zend)
-
22-09-2019 - |
Вопрос
Я начинаю с ZF (1.9.7) и хочу использовать View Helpers из библиотеки, общей для всех моих проектов.Но я не могу найти, как добавить его в путь к помощникам.Мои герперы работают нормально, когда я помещаю их в путь помощников приложения.
Вот ошибка: я нахожу путь к помощникам ZF и путь к приложениям.
object(ArrayObject)#71 (3) {
["exception"]=>
object(Zend_Loader_PluginLoader_Exception)#70 (6) {
["message:protected"]=>
string(151) "Plugin by name 'Voo' was not found in the registry; used paths:
Zend_View_Helper_: Zend/View/Helper/;C:/ZendStd/www/applis/VOO4_PROJECTX/views\helpers/"
["string:private"]=>
string(0) ""
["code:protected"]=>
int(0)
["file:protected"]=>
string(89) "C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Loader\PluginLoader.php"
["line:protected"]=>
int(401)
С наилучшими пожеланиями
Седрик
Решение
Это можно сделать очень легко с помощью встроенного ресурса Zend_Application для представления.Если вы используете ini-конфигурации, добавьте такую строку:
resources.view.helperPath.My_View_Helper = "My/View/Helper"
Конец ключа — это префикс имени класса, а значение — путь, по которому они находятся.
Другие советы
Вспомогательные пути добавляются через Zend_View_Abstract::addHelperPath().Вы можете вызвать этот метод непосредственно в существующем экземпляре View.
Вспомогательные пути также можно настроить различными способами во время начальной загрузки.Ознакомьтесь с главой руководства ZF, посвященной Zend_Application
чтобы узнать, как использовать классы и ресурсы Bootstrap:
- http://framework.zend.com/manual/1.12/en/zend.view.helpers.html
- http://framework.zend.com/manual/1.12/en/zend.application.quick-start.html
- http://framework.zend.com/manual/1.12/en/zend.application.examples.html
- http://framework.zend.com/manual/1.12/en/zend.application.available-resources.html#zend.application.available-resources.view
Возникла проблема при использовании
resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers"
Я не могу получить доступ ни к одному помощнику представления в макете, даже к локальным помощникам в модуле.(Плагин по имени «LoggedInAs» не найден в реестре), но продолжает работать в файлах шаблонов представлений.
Я поместил этот код «echo Zend_Debug::dump($this)» в конец файла макета, и это часть вывода.
["_prefixToPaths:protected"] => array(3) {
["Zend_View_Helper_"] => array(2) {
[0] => string(17) "Zend/View/Helper/"
[1] => string(16) "./views\helpers/"
}
["ZendX_JQuery_View_Helper_"] => array(1) {
[0] => string(25) "ZendX/JQuery/View/Helper/"
}
["Zend_View_Helper_Navigation_"] => array(1) {
[0] => string(28) "Zend/View/Helper/Navigation/"
}
}
но при использовании этого кода в файле начальной загрузки проблем нет.
//Initialize and/or retrieve a ViewRenderer object on demand via the helper broker
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewRenderer->initView();
//add the global helper directory path
$viewRenderer->view->addHelperPath(APPLICATION_PATH.'/../library/App/views/helpers', 'App_View_Helper');
результат был таким, как показано ниже:
["_prefixToPaths:protected"] => array(4) {
["Zend_View_Helper_"] => array(3) {
[0] => string(17) "Zend/View/Helper/"
[1] => string(16) "./views\helpers/"
[2] => string(86) "D:/zf/application/modules/default/views\helpers/"
}
["App_View_Helper_"] => array(1) {
[0] => string(85) "D:\zf\application/../library/App/views/helpers/"
}
["ZendX_JQuery_View_Helper_"] => array(1) {
[0] => string(25) "ZendX/JQuery/View/Helper/"
}
["Zend_View_Helper_Navigation_"] => array(1) {
[0] => string(28) "Zend/View/Helper/Navigation/"
}
}
РЕДАКТИРОВАТЬ:Проверить просмотреть помощник в Zend Framework для более подробного рассмотрения этой проблемы с помощью помощника представления Loggedinas Роба Аллена.
Вы можете не только сделать так, как указано Дэвидом Каунтом, но вы также можете сделать это в своем бутстрапе.Обратите внимание, что в Zend Framework всегда есть несколько способов сделать что-либо.
Проверить http://devzone.zend.com/article/3412
Если у вас есть доступ к объекту представления, сделайте следующее.
<?php
$view->addHelperPath('My/View/Helper/', 'My_View_Helper');
?>
вам может потребоваться получить объект представления, если вы используете плагин переднего контроллера
Также ознакомьтесь с этим действительно замечательным набором публикаций, которые начинаются здесь:
Я написал короткое простое руководство по регистрации помощников представления Zend из общего каталога, доступ к которому можно получить во всем приложении.Пожалуйста, посмотрите.
http://www.mixedwaves.com/2010/03/accessing-and-using-zend-view-helpers-from-a-common-directory/