2010-04-22 87 views
0

我这样设置在someAction功能视图变量:Zend框架:在布局脚本查看变量总是空

$this->view->type = "some type"; 

当我访问这个变量布局脚本里像这样:

<?php echo $this->type ?> 

它什么都不打印。怎么了?

我的布局

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
resources.layout.layout = "layout" ; changed 'default' to 'layout' 

编辑

thread相关的application.ini设置提出替代解决方案,但在寻找解决上述问题。这在Zend 1.6.2中起作用。我刚刚升级到1.10,并停止工作。

编辑

如果我设置这种观点的任何_init自举功能里面变种,它的工作原理。

回答

7

如果你要分配的东西布局你必须去的其他方式:

+0

@ArneRie:这与我在编辑中提到的备用链接中发布的解决方案相同。 – understack 2010-04-22 06:40:48

+0

刚刚使用ZF 1.10.1进行了测试,请注意。你必须使用<?php echo $ this-> layout() - > name; ?> – opHASnoNAME 2010-04-22 06:59:32

+0

是的,你的解决方案可行,但我的问题是为什么视图变量无法直接访问?它曾经工作过。另请参阅我的第二次编辑。 – understack 2010-04-22 07:01:33

0

你有没有在你的application.ini文件中的以下条目?

resources.view[] = 

所以,你可以初始化带任何选项的视图,并使用它来:

<?php echo $this->type ?> 
+0

这在布局脚本中不起作用。 – understack 2010-04-22 16:18:35

+0

你是否通过以下方式完成了视图引导:$ this-> bootstrap('view');放置在bootstrap.php文件的资源方法中? – bitfox 2010-04-22 17:00:33

1

相信布局视图对象和动作视图对象是在Zend_View的类的单独的实例。

我觉得这是从控制器传递变量布局的正确方法:

/** 
* Controller action 
*/  
public function indexAction() 
{ 
    $this->_helper->layout()->assign('myName', 'John Doe'); 
} 

,然后在布局脚本中,你可以通过引用这样的布局对象访问的变量:

<html> 
<body> 
<?php echo $this->layout()->myName; ?> 
</body> 
</html>