Zend Framework:布局脚本中的View变量始终为null

时间:2010-04-22 05:58:33

标签: model-view-controller zend-framework layout

我在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,它就可以工作。

3 个答案:

答案 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 ?>