Model view controller Zend Framework:布局脚本中的视图变量始终为空

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

我在someAction函数中设置了一个视图变量,如下所示:

$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文件的资源方法中?