我想在现有项目中添加视图助手路径。为此,我将以下行添加到我的application.ini:
resources.view[] =
在我的bootstrap文件中:
$this->bootstrap("view");
$view = $this->getResource("view");
$view->addHelperPath(APPLICATION_PATH . "/../library/MyPath", MyNamespace");
现在我确实可以在我的路径中添加视图助手,所以没问题。
但是,我在Action Helpers中添加到视图中的变量突然在我的视图中无法访问。我可以像往常一样在布局中检索它们,所以我知道它们被正确分配了。
我在postDispatch中的Action Helper中分配了一个变量:
$view = $this->getActionController()->view;
$view->myVar = $this->var;
然后在我的布局中
Zend_Debug::dump( $this->myVar );
结果为:(string)“myVar contents”
在我看来
Zend_Debug::dump( $this->myVar );
结果为:null
由于这是一个现有的项目,我需要一个通用的解决方案,我可以在我的bootstrap或application.ini中使用
答案 0 :(得分:0)
您可以从application.ini添加路径到您的视图:
resources.view.helperPath.MyPrefix = "/path/to/helpers"
希望这可以解决问题。我假设你这样做的方式,现有的视图实例以某种方式被覆盖,这会破坏以前的更改。您可以尝试从前控制器获取视图,设置辅助路径,并将其传递回前控制器。
答案 1 :(得分:0)
编辑:删除了有关视图变量和布局变量之间差异的文本 - 请参阅@pieter和@david weinraub的评论
Action Helper的postDispatch在渲染视图后触发,但在渲染布局之前触发。因此,在我的视图中,操作助手的postDispatch中分配给视图的任何变量都不可用,它们尚不存在。
我很好奇为什么只有在主动引导视图时才会出现这种情况?我会留下未回答的问题,也许有人可以澄清这一点。