Model view controller Zend Framework:布局脚本中的视图变量始终为空
我在someAction函数中设置了一个视图变量,如下所示:Model view controller Zend Framework:布局脚本中的视图变量始终为空,model-view-controller,zend-framework,layout,Model View Controller,Zend Framework,Layout,我在someAction函数中设置了一个视图变量,如下所示: $this->view->type = "some type"; <?php echo $this->type ?> <html> <body> <?php echo $this->layout()->myName; ?> </body> </html> 当我在布局脚本中访问此变量时,如下所示: $this->view
$this->view->type = "some type";
<?php echo $this->type ?>
<html>
<body>
<?php echo $this->layout()->myName; ?>
</body>
</html>
当我在布局脚本中访问此变量时,如下所示:
$this->view->type = "some type";
<?php echo $this->type ?>
<html>
<body>
<?php echo $this->layout()->myName; ?>
</body>
</html>
编辑
这建议了替代解决方案,但正在寻找上述问题的解决方案。这在Zend 1.6.2中起作用。我刚升级到1.10,它就停止工作了
编辑
如果我在任何_initbootstrap函数中设置了这个视图变量,它就会起作用。如果你想为布局分配一些内容,你必须换一种方式:
// get the layout instance
$layout = Zend_Layout::getMvcInstance();
// assign fooBar as Name to the layout
$layout->name = 'fooBar';
在application.ini文件中是否有以下条目
resources.view[] =
因此,您可以不使用任何选项初始化视图,并通过以下方式使用它:
<?php echo $this->type ?>
我相信布局视图对象和动作视图对象是Zend_视图类的独立实例 我认为这是将变量从控制器传递到布局的正确方法:
/**
* Controller action
*/
public function indexAction()
{
$this->_helper->layout()->assign('myName', 'John Doe');
}
然后在布局脚本中,您可以通过如下方式引用布局对象来访问变量:
$this->view->type = "some type";
<?php echo $this->type ?>
<html>
<body>
<?php echo $this->layout()->myName; ?>
</body>
</html>
@ArneRie:这与我在编辑中提到的备选链接中发布的解决方案相同。刚刚用ZF 1.10.1进行了测试,效果良好,请记住。您必须使用yes,您的解决方案是有效的,但我的问题是为什么不能直接访问视图变量?而且它以前很管用。也请看我的第二次编辑。你通过:$this->bootstrap'view'完成视图引导了吗;放在bootstrap.php文件的资源方法中?