2010-04-22 104 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>