2012-05-07 67 views
3

我是新來的Zend框架和我有什麼事,我試圖做的問題。視圖助手,局部視圖或別的東西,

是我的工作將包括需要被樣式相同的1種或多個div元素的應用程序的大部分頁面的主要內容。

這裏是我想要生成的HTML的例子:

<div id='admin-locations' class='panel'> 
    <header class="panel-header"> 
     <h2>Locations</h2> 
    </header> 
    <div class='panel-content'> 
     <div id='locations-table' class='google-vis-table'></div> 
     <form id='locations'> 
      ... 
     </form> 
    </div> 
</div> 

我知道我可以很容易地推形式我認爲劇本在我的控制器,然後將此代碼添加到我的控制器做到這一點。

<div id='admin-locations' class='panel'> 
    <header class="panel-header"> 
     <h2>Locations</h2> 
    </header> 
    <div class='panel-content'> 
     <div id='locations-table' class="google_vis_table"></div> 
     <?php 
      echo $this->formLocations; 
     ?> 
    </div> 
</div> 

但這不是乾的。

我曾經在這裏有一個谷歌可視化表的例子和Zend的形式在它的內容。有時面板需要包含一個表單。有時他們不會,所以我不認爲形式裝飾者是要走的路。所以基本上,面板的ID,面板標題文本和div class ='panel-content'的內容需要是動態的。其他一切將保持從面板到面板相同。

什麼是我最好的選擇嗎?

回答

4

你可能要考慮使用諧音: http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.partial

例如,你可以有一個管理,locations.phtml部分包含:

<div id='admin-locations' class='panel'> 
    <header class="panel-header"> 
     <h2>Locations</h2> 
    </header> 
    <div class='panel-content'> 
     <div id='locations-table' class="google_vis_table"></div> 
     <?php echo $this->form; ?> 
    </div> 
</div> 

現在,你可以簡單地重複調用部分在視圖中,有或沒有提供表格:

... 
echo $this->partial('admin-locations.phtml'); 
echo $this->partial('admin-locations.phtml', array('form' => $this->yourForm); 
echo $this->partial('admin-locations.phtml'); 
... 

希望這有助於。

+0

有沒有這樣做的好處,而不是使用視圖幫手? – bconrad

+0

實際上,部分視圖有一個很大的優勢:Zend View Helper不是HTML標記的好地方。 – BasTaller

+0

請注意每個部分都會創建zend_view的新實例以及所有需要的設置。您可能希望使用$ this-> render()來代替這裏的註釋http://stackoverflow.com/questions/4708754/optimising-the-zend-framework/4718334#4718334 –