2013-04-29 2 views
0

Я пытаюсь добавить Просмотр помощника в моем проекте, но я получаю следующее сообщение об ошибке:Zend: Пользовательские Помощники

[Mon Apr 29 14:36:19 2013] [error] [client 10.0.0.26] PHP Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'LoggedInAs' was not found in the registry; used paths:\nMy_View_Helper_: /var/www/html/test-project/application/views/helpers/\nZend_View_Helper_: Zend/View/Helper/:/var/www/html/test-project/application/views/helpers/' in /usr/share/php/Zend/Loader/PluginLoader.php:412\nStack trace:\n#0 /usr/share/php/Zend/View/Abstract.php(1182): Zend_Loader_PluginLoader->load('LoggedInAs')\n#1 /usr/share/php/Zend/View/Abstract.php(618): Zend_View_Abstract->_getPlugin('helper', 'loggedInAs')\n#2 /usr/share/php/Zend/View/Abstract.php(344): Zend_View_Abstract->getHelper('loggedInAs')\n#3 /var/www/html/test-project/application/layouts/scripts/layout.phtml(16): Zend_View_Abstract->__call('loggedInAs', Array)\n#4 /var/www/html/test-project/application/layouts/scripts/layout.phtml(16): Zend_View->loggedInAs()\n#5 /usr/share/php/Zend/View.php(108): include('/var/www/html/t...')\n#6 /usr/share/php/Zend/View/Abstract.php(888): Zend_View->_run('/var/www/html/ in//usr/share/php/Zend/Controller/Plugin/Broker.php on line 336 

приложение/просмотров/помощники/LoggedInAs.php

class My_View_Helper_LoggedInAs extends Zend_View_Helper_Abstract 
{ 
    public function loggedInAs() 
    { 
     //code 
    } 
} 

применение/конфиги/application.ini

resources.view[]= 
resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/views/helpers" 

приложение/макеты/скрипты/layout.phtml

echo $this->loggedInAs(); 

Есть несколько других вопросов на StackOverflow, но это не работает для меня.

редактировать 1: изменил Zend_View_Helper_LoggedInAs к My_View_Helper_LoggedInAs после ответа Тима Фонтана редактировать 2: полной ошибки

ответ

3

Ответ вы предоставили, кажется, не имеет особого смысла, если вы говорите, вы добавили <?php в верхней части файла где написан ваш класс, все, что я могу сказать, «Добро пожаловать в PHP!». В противном случае следующее может помочь в будущем ... или нет.

Использование мастера application.ini из feibeck в качестве эталона, я придумал:

//excerpt from application.ini 
resources.view.helperPath = APPLICATION_PATH "/views/helpers" 
resources.view.helperPathPrefix = "My_View_Helper" 

однако вы используете значения по умолчанию для MVC, так что вы не должны требовать каких-либо конфигураций вообще.

Это может быть случай слишком большой конфигурации.

Это, как говорится: Я никогда не был фанатом настройки параметров просмотра в application.ini, как я никогда не совсем уверен, что эффект следует ожидать (я добавление или установка опции?) , Я предпочитаю, чтобы настроить вид в загрузчике, как большинство методов, используемых более многословное и рассказать более полную историю:

//bootstrap.php 
protected function _initView() 
    { 
     //Initialize view 
     $view = new Zend_View(); 
     //add custom view helper path 
     $view->addHelperPath(APPLICATION_PATH . '/../library/My/View/Helper'); 
     //add custom script path for partials 
     $view->addScriptPath(APPLICATION_PATH . '/../library/My/View/Scripts/'); 
     //set css includes, path is relative to /public 
     $view->headlink()->setStylesheet('/bootstrap/css/bootstrap.css'); 
     //add javascript files, path is relative to /public 
     $view->headScript()->setFile('/bootstrap/js/jquery.min.js'); 
     $view->headScript()->appendFile('/bootstrap/js/bootstrap.min.js'); 
     //add it to the view renderer 
     $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
       'ViewRenderer'); 
     $viewRenderer->setView($view); 
     //Return it, so that it can be stored by the bootstrap 
     return $view; 
    } 

Надеется, что это обеспечивает некоторую помощь.

+0

Да, я знаю, глупо, что я не думал об этом. Я уже программирую на PHP уже пару лет, но я совершенно смущен, теперь я изучаю ZF;) –

+0

Не позволяйте ZF смущать вас много, это просто PHP. (Подсказка Подсказка) :) – RockyFord

0

Имя класса должно быть My_View_Helper_LoggedInAs, так это то, что вы объявили в качестве имен в application.ini , Пространство имен Zend предназначено только для классов ZF.

+0

К сожалению, не работает, такой же ошибка. –

+0

Можете ли вы изменить свой вопрос, чтобы включить полную ошибку? Он также должен указать пути и пространства имен, которые он пробовал –

+0

Посмотрите первый код для полной ошибки –

0

Я исправил это странным решением, так как я не могу найти ничего подобного в Интернете. Я просто добавил <?PHP в начале приложения/просмотров/хелперов/LoggedInAs.php

Смежные вопросы