2010-10-08 50 views
5

我有一個相對複雜的應用程序部分,它是訪問控制列表的編輯器。我需要在幾個地方重複使用它,並且我希望它可以加載所有ajax-y等。我在哪裏放置視圖助手所需的視圖腳本(使用Zend_View和默認目錄佈局)?

因爲我需要經常使用它,所以我想把它變成一個Zend_View_Helper。這很簡單 - 只需將$view->setHelperPath(APPLICATION_PATH . '/views/helpers', 'Cas_View_Helper');放入視圖的引導程序中,並且似乎都將加載視圖幫助程序。

但是,輔助程序確實應該使用視圖腳本輸出。有一個標準的位置,我應該這樣做嗎?

回答

8

通常,當一個助手需要一個視圖腳本時,這個腳本被放置在一個部分內。該部分的位置可能會因你的目錄結構有所不同,但標準是:

application[/modules/name]/views/scripts/partials/ 

你可以寫的是這樣一個幫手:

class Cas_View_Helper_Foo extends Zend_View_Helper_Abstract 
{ 
    protected $partial = 'partials/foo.phtml'; 
    protected $view = null; 

    // Render the partial here 
    public function foo($params) 
    { 
     $this->view->partial($this->partial, $params); 
    } 

    // Specifying this method Zend_View will inject the view here 
    public function setView(Zend_View_Interface $view) 
    { 
     $this->view = $view; 
    } 

} 
+0

+ +1作爲迄今爲止給出路徑的唯一答案。 – 2010-10-22 16:01:17

0

在您製作文件夾助手的視圖文件夾中。在這裏你把視圖助手。

+0

是的,我已經完成了。但是幫手需要一個視圖腳本本身 – 2010-10-22 16:00:20

1

有沒有一個標準,建議或關於如何做到這一點的任何事情。 ZF儘可能靈活,因此無論對您的應用來說什麼都是最好的。我將用這個答案來比較當前的解決方案。

凱恩的答案是我覺得大多數人最終會來的解決方案。我個人有我自己的轉折:application[/modules/name]/views/scripts/helpers/{your helper}/blah.phtml這使您不會有衝突的部分名稱,並能夠輕鬆導航到您的視圖助手文件。

雖然這仍然吸取模塊化的球,視圖助手必須至少安裝在兩個地方。或者另一種相當流行的解決方案是:

application[/modules/name]/views/helpers/{your helper}.php 
application[/modules/name]/views/helpers/{your helper}/{view scripts}.phtml 

這爲您的視圖助手提供了一點更好的模塊化。