2011-03-02 65 views
3

我是zend框架的新手,並試圖獲得關於代碼重用性的一些見解。 我明確知道模塊,但似乎有什麼不確定性,哪些功能應該進入模塊,哪些不是。Zend可重用的小部件/插件/小應用程序?

我想要做到:

1)具有可重複使用的小程序/控件/插件(無論你可能會打電話給他們),人們可以簡單地插入到任何網站佈局做這個或觀點:

<?php echo $this->contactform;?> 

或該視圖:

<?php echo $this->layout()->blog;?> 

我會打電話給他們擴展。所以基本上就是你在joomla/wordpress/concrete5模板中看到的東西。

2)與該特定擴展名相關的所有代碼應該位於單獨的目錄中。

3)我們應該只能在需要時輸出某些模塊/控制器的擴展。如果不顯示它們,它們不應該被不必要地渲染。

4)每個擴展可以輸出頁面上的多個內容區域。

如果你有一個很好的佈局結構/方法,你使用 - 請發表回覆。

謝謝:)

回答

6

這聽起來像你需要view helpers晚自習。視圖助手可以很簡單,只需返回應用程序版本號或像向多個佔位符添加html一樣複雜即可。例如:

layout.phtml:

<h1><?php echo $this->placeholder('title'); ?> 
<div class="sidebar"> 
    <?php echo $this->placeholder('sidebar'); ?> 
</div> 
<div class="content"> 
    <?php echo $this->layout()->content; ?> 
</div> 
在視圖腳本foo.phtml例如

<?php 
    $this->placeholder('title')->set('Hello World!'); 
    $this->placeholder('sidebar')->set('Hello World!'); 
?> 
<h1>Bar Bar!</h1> 

現在,如果你希望能夠到,超過和重用一遍又一遍你可以這樣做:

<?php 
class Zend_View_Helper_MyHelper extends Zend_View_Helper_Abstract 
{ 
    public function myHelper() 
    { 
     $this->view->placeholder('title')->set('Hello World!'); 
     $this->view->placeholder('sidebar')->set('Hello World!'); 
     return '<h1>Bar Bar!</h1>'; 
    } 
} 

現在,替換代碼在你foo.pthml:

<?php 
echo $this->myHelper(); 

foo.phtml輸出的兩個例子:

的Hello World!

Hello World!

酒吧!

當然這是一個非常簡單的例子,但我希望這有助於您指出正確的方向。快樂的黑客!

+0

感謝您的回覆! afaik我可以從視圖助手訪問模型讀取操作。但不建議從視圖助手訪問編輯/更新/寫入模型 - 對嗎? – Stann 2011-03-03 13:03:34

+0

我不會。我留下更新和插入到窗體或控制器。如果你有更新/插入查詢,你打算重用,我建議直接在模型本身中添加邏輯。 – Fatmuemoo 2011-03-03 13:07:16

相關問題