2013-08-30 3 views
1

У меня странная ситуация. У меня есть вид, с этой точки зрения я выполняю свой вид помощника «converttingText». Этот помощник вида (FR_View_Helper_ConvertingText.php) находится в папке FR/View/HelperВид помощника доступен в одном контроллере, но недоступен из другого

Нет проблем, помощник работает.

Я создал 404 страницу. Это не простая страница html. Эта страница похожа на главную страницу - мы выводим некоторые элементы из базы данных. Я скопировал часть представления в новом представлении, и у меня проблема с конвертированием.

Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'ConvertingText' in /var/www/framework/zend/library/Zend/Controller/Plugin/Broker.php on line 336 

Zend_Loader_PluginLoader_Exception: Plugin by name 'ConvertingText' was not found in the registry; used paths: 
Zend_View_Helper_: Zend/View/Helper/:../application/views/helpers/:/var/www/current/application/modules/default/views/helpers/ in /var/www/framework/zend/library/Zend/Loader/PluginLoader.php on line 422 

На Bootstrap.php мы имеем линию с добавлением папки для загрузки помощника

$view->addHelperPath("FR/View/Helper", "FR_View_Helper"); 

Я отлажен и выходных путями из класса метода нагрузки Zend_Loader_PluginLoader А на главной странице у меня есть разные пути (для загрузки плагин) из путей на странице 404.

На главной странице у меня есть эти пути

/var/www/current/modules/movies/views/helpers/ConvertingText.php 
FR/View/Helper/ConvertingText.php 

На 404 странице у меня есть эти пути

/var/www/current/application/modules/movies/views/helpers/ConvertingText.php 
/var/www/current/application/modules/default/views/helpers/ConvertingText.php 
../application/views/helpers/ConvertingText.php 
Zend/View/Helper/ConvertingText.php 

И один странный вопрос, если я добавить строку

$view->convertingText('', ''); 

после строки

$view->addHelperPath("FR/View/Helper", "FR_View_Helper"); 

in Bootstrap.php - просмотр вспомогательных преобразованийText работает на странице 404.

Почему такое поведение?

protected function _initView() 
{ 
    $view = new Zend_View(); 
    $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper"); 
    $view->addHelperPath("DR/View/Helper", "DR_View_Helper"); 
    $view->addHelperPath("FR/View/Helper", "FR_View_Helper"); 

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); 
    $viewRenderer->setViewScriptPathSpec(":controller/:action.:suffix"); 
    $viewRenderer->setView($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 

    Zend_View_Helper_PaginationControl::setDefaultViewPartial(array('pagination.phtml','default')); 

    Zend_Registry::set('view', $view); 

    return $view; 
} 

ответ

0

I нашел проблему, почему помощник просмотра был неприемлем.

Пути к помощникам переопределены. Я нашел этот код в одном плагине.

$this->view = Zend_Registry::get('view'); 
$this->view->setBasePath('../application/views/'); 

Метод исполнения setBasePath переопределяет пути к моим помощникам.

1

различные пути, вероятно, зависит от того, какой модуль вы в Вы должны использовать абсолютный путь для зрения хелперов пути, то вы не будете иметь эту проблему:.

$view->addHelperPath(APPLICATION_PATH."/../FR/View/Helper", "FR_View_Helper"); 

(обновляйте по мере необходимости.)

ZF повторно использует вспомогательные классы, так что $view->convertingText('', ''); исправляет его, потому что тогда помощник загружается до изменения модуля.

Edit: Попробуйте для инициализации метод просмотра:

protected function _initView() 
{ 
    $view = new Zend_View(); 
    $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper"); 
    $view->addHelperPath(APPLICATION_PATH."/../DR/View/Helper", "DR_View_Helper"); 
    $view->addHelperPath(APPLICATION_PATH."/../FR/View/Helper", "FR_View_Helper"); 

    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); 
    $viewRenderer->setViewScriptPathSpec(":controller/:action.:suffix"); 
    $stack = Zend_Controller_Action_HelperBroker::getStack(); 
    $stack->push($viewRenderer); 

    Zend_View_Helper_PaginationControl::setDefaultViewPartial(array('pagination.phtml','default')); 

    Zend_Registry::set('view', $view); 

    return $view; 
} 
+0

Работает только в том случае, если я добавлю этот код в свой ErrorController. (как этот $ this-> view-> addHelperPath (APPLICATION_PATH. "/../FR/View/Helper", "FR_View_Helper"); Замена относительного пути на абсолютный в Bootstrap.php дает тот же результат - main страницы, 404 страница - ошибка Спасибо за это – yAnTar

+0

Какой код, где находится ваш контроллер ошибок? –

+0

Извините, в моем предыдущем комментарии я разместил только часть текста. – yAnTar

0

Попробуйте это, я думаю, что слэш (/) и символ подчеркивания (_) может создавать проблемы

protected function _initView() 
{ 
    $view = new Zend_View(); 
    $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper"); 
    $view->addHelperPath($path . "/DR/View/Helper/", "DR_View_Helper_");//Add $path 
    $view->addHelperPath($path . "/FR/View/Helper/", "FR_View_Helper_");//Add $path 

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); 
    $viewRenderer->setViewScriptPathSpec(":controller/:action.:suffix"); 
    $viewRenderer->setView($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 

    Zend_View_Helper_PaginationControl::setDefaultViewPartial(array('pagination.phtml','default')); 

    Zend_Registry::set('view', $view); 

    return $view; 
} 
+0

спасибо, но такая же ситуация. – yAnTar

+0

Вы заменили $ path своим $ path? –

+0

@yAnTar is DR/View/Helper находится внутри каталога библиотек? –

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