将视图资源添加到应用程序ini后,布局参数丢失

时间:2012-03-16 13:28:20

标签: php zend-framework bootstrapping

我想在现有项目中添加视图助手路径。为此,我将以下行添加到我的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中使用

2 个答案:

答案 0 :(得分:0)

您可以从application.ini添加路径到您的视图:

resources.view.helperPath.MyPrefix = "/path/to/helpers"

希望这可以解决问题。我假设你这样做的方式,现有的视图实例以某种方式被覆盖,这会破坏以前的更改。您可以尝试从前控制器获取视图,设置辅助路径,并将其传递回前控制器。

答案 1 :(得分:0)

经过一些研究,这是我发现的。

编辑:删除了有关视图变量和布局变量之间差异的文本 - 请参阅@pieter和@david weinraub的评论

Action Helper的postDispatch在渲染视图后触发,但在渲染布局之前触发。因此,在我的视图中,操作助手的postDispatch中分配给视图的任何变量都不可用,它们尚不存在。

我很好奇为什么只有在主动引导视图时才会出现这种情况?我会留下未回答的问题,也许有人可以澄清这一点。