我有点奇怪的情况。 我有观察,从这个视图我执行我的视图助手" convertedText"。此视图助手(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");
在Bootstrap.php中 - view helper conversionText在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 :(得分:1)
不同的路径可能取决于您所在的模块。您应该使用视图助手路径的绝对路径,然后您就不会遇到此问题:
$view->addHelperPath(APPLICATION_PATH."/../FR/View/Helper", "FR_View_Helper");
(根据需要更新。)
ZF重用它已经加载的辅助类,因此$view->convertingText('', '');
修复了它,因为在模块更改之前加载了帮助程序。
编辑:尝试使用此初始化视图方法:
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;
}
答案 1 :(得分: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;
}
答案 2 :(得分:0)
我发现了问题,为什么查看助手是不可接受的。
帮助者的路径被覆盖。我在一个插件中找到了这段代码。
$this->view = Zend_Registry::get('view');
$this->view->setBasePath('../application/views/');
执行方法setBasePath覆盖了我的帮助程序的路径。