2012-05-31 68 views
0

- >簡版: 我想在我的視圖中顯示佈局。我怎麼稱呼它?Zend Framework - 從視圖中獲取佈局

- >長版 我想在我的網站的一些(不是全部)頁面中有一個表格框。這將像一個顯示用戶信息的小部件。 因此,我創建了一個佈局(myLayout.phtml),我稱其爲助手(MyHelper.php),通過模型獲取所有信息。 在這裏,點,現在我想從一個簡單的視圖使用這種佈局來顯示錶格。 如何在我的視圖中調用該佈局?

:)

P.S.我遵循這個良好的論壇(http://inchoo.net/tools-frameworks/zend/zend-framework-custom-view-helper/),但他們從主佈局調用了「myLayout.phtml」,而不是從簡單的觀點:/

解決

我把 「myLayout.phtml」 不是在 「佈局」 文件夾,但在 「腳本」 文件夾中。

./views/helpers/MyHelper.php

class Zend_View_Helper_MyHelper 
{ 
    public function myHelper() 
    { 
     $mm = new MyModel(); 
     return $mm->myModel(); 
    } 

} 

./views/scripts/myViews/myHelperView.phtml(前myLayout.phtml)

<ul> 
    <?php foreach($this->myHelper() as $item): ?> 
     <li><?php echo $item ?></li> 
    <?php endforeach; ?> 
</ul> 

和在一個簡單的視圖我call myHelperView

render(「myViews/myHelperView.phtml」); ?>

對於一種我的文件順序,我寧願將最後一個腳本保存在佈局文件夾中,但我不知道如何將它讀入該位置。 我希望這種方式是一個很好的選擇...

回答

1

這聽起來像你已經創建了一個自定義View Helper。如果是這種情況,那麼您只需在視圖中顯示它即可撥打類似<?php echo $this->myViewHelperName() ?>的電話。

Placeholder Helper也可能是你感興趣的。使用佔位符助手,可以在佈局中無條件地調用佔位符,但只能從所需的視圖中將視圖助手的內容分配給它。這樣,如果您不給佔位符分配任何內容,它將不會顯示任何內容,但如果您調用視圖助手並將內容分配給佔位符,它將顯示您想要的內容。

希望有所幫助。

+0

是的。我做的是一個自定義的視圖助手。我可以通過這種方式調用我的View Helper「$ this-> myHelper();」這給了我幫助者的回報。這工作正常。 但我想在我的視圖中顯示「myLayout」(從myHelper獲取信息並顯示其html代碼)... 和<?php echo $ this-> partial('myLayout.phtml')?>只返回致命錯誤... 有什麼不對? :O – ehijon

1

聽起來好像您的myLayout.phtml文件是partial腳本。您可以簡單地將它加載到您的視圖文件中,如下所示:

<?php echo $this->partial('myLayout.phtml') ?> 

這與從佈局調用它相同。無論您是從佈局還是視圖調用腳本,都無關緊要。佈局只是一個特殊的視圖腳本。

+0

我以爲相同,但是這個 <?php echo $ this-> partial('myLayout.phtml')?> 只有當我從佈局調用它並且不構成我的視圖... 有什麼不對? :O – ehijon

+0

它會給出任何錯誤嗎? – Config

+0

是的,這個 echo $ this-> partial(「myLayout.phtml」); 給了我致命的錯誤。 但是,如果我把這個文件放在application/scripts/myViewLayouts /文件夾中(而不是在application/layouts /中)並且以這種方式調用它,它就可以工作。 echo $ this-> partial(「myViewLayouts/myHelper.phtml」);我使用這種方式在bootstrap中設置了layouts文件夾:Zend_Layout :: startMvc(array('layoutPath'=> ROOT_DIR。'/ application/views/layouts')); 爲什麼? :○ – ehijon