我在someAction函数中设置了一个视图变量,如下所示:
$this->view->type = "some type";
当我在布局脚本中访问此变量时,如下所示:
<?php echo $this->type ?>
它什么都不打印。怎么了?
我的application.ini设置与布局相关
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.layout.layout = "layout" ; changed 'default' to 'layout'
修改
这thread建议了替代解决方案,但寻找上述问题的解决方案。这在Zend 1.6.2中有效。我刚刚升级到1.10并且它停止了工作。
修改
如果我在任何_init Bootstrap函数中设置了这个视图var,它就可以工作。
答案 0 :(得分:7)
如果你想为你的布局分配一些东西,你必须采取另一种方式:
// get the layout instance
$layout = Zend_Layout::getMvcInstance();
// assign fooBar as Name to the layout
$layout->name = 'fooBar';
答案 1 :(得分:1)
我相信布局视图对象和操作视图对象是Zend_View类的独立实例。
我认为这是将变量从控制器传递到布局的正确方法:
/**
* Controller action
*/
public function indexAction()
{
$this->_helper->layout()->assign('myName', 'John Doe');
}
然后在布局脚本中,您可以通过引用布局对象来访问变量,如下所示:
<html>
<body>
<?php echo $this->layout()->myName; ?>
</body>
</html>
答案 2 :(得分:0)
您的application.ini文件中是否有以下条目?
resources.view[] =
因此,您可以在没有选项的情况下初始化视图,并通过以下方式使用它:
<?php echo $this->type ?>