2012-03-06 115 views

回答

4

這裏距離ZF2引用,應該讓你開始的摘錄:

14.4.2。註冊助手 Zend \ View \ Renderer \ PhpRenderer組成一個管理助手的插件代理,特別是一個 Zend \ View \ HelperBroker的實例,該實例擴展了基本插件代理,以便確保我們有有效的助手可用。默認情況下,HelperBroker 使用Zend \ View \ HelperLoader作爲它的幫助器定位器。 HelperLoader是一個基於地圖的加載程序,它意味着您只需簡單地將您希望引用它的幫助程序/插件名稱映射到幫助程序/插件的實際 類名稱。

編程,如下做到這一點:

// $view is an instance of PhpRenderer 
$broker = $view->getBroker(); 
$loader = $broker->getClassLoader(); 

// Register singly: 
$loader->registerPlugin('lowercase', 'My\Helper\LowerCase'); 

// Register several: 
$loader->registerPlugins(array(
    'lowercase' => 'My\Helper\LowerCase', 
    'uppercase' => 'My\Helper\UpperCase', 
)); 

在MVC應用程序,你通常會通過簡單的配置通過地圖0​​插件類。

// From within a configuration file 
return array(
    'di' => array('instance' => array(
     'Zend\View\HelperLoader' => array('parameters' => array(
      'map' => array(
       'lowercase' => 'My\Helper\LowerCase', 
       'uppercase' => 'My\Helper\UpperCase', 
      ), 
     )), 
    )), 
); 

以上可以需要與PhpRenderer註冊助手 每個模塊中進行;但是,請注意,另一個模塊可以使用 具有相同名稱的註冊助手,因此模塊的順序可能會影響 哪些助手類將實際註冊!

14.4.3。編寫自定義幫助程序編寫自定義幫助程序非常簡單。我們建議延長的Zend \查看\助手\ AbstractHelper,但在 最小的,你只需要實現了Zend \查看\助手界面:如果你希望你的助手是能夠被

namespace Zend\View; 

interface Helper 
{ 
    /** 
    * Set the View object 
    * 
    * @param Renderer $view 
    * @return Helper 
    */ 
    public function setView(Renderer $view); 

    /** 
    * Get the View object 
    * 
    * @return Renderer 
    */ 
    public function getView(); 
} 

就像調用PhpRenderer的 方法一樣調用,你也應該在你的helper中實現一個 __invoke()方法。

如前所述,我們建議延長 的Zend \查看\助手\ AbstractHelper,因爲它實現了助手定義 的方法,讓你在你的發展領先地位。

一旦你定義了你的幫助類,確保你可以自動加載 它,然後註冊它與插件代理。

下面是一個例子幫手,這我們加標題「一個SpecialPurpose」

namespace My\View\Helper; 

use Zend\View\Helper\AbstractHelper; 

class SpecialPurpose extends AbstractHelper 
{ 
    protected $count = 0; 

    public function __invoke() 
    { 
     $this->count++; 
     $output = sprintf("I have seen 'The Jerk' %d time(s).", $this->count); 
     return htmlspecialchars($output, ENT_QUOTES, 'UTF-8'); 
    } 
} 

然後假設,當我們用插件經紀人註冊,我們映射它 字符串「特殊目的」。

在一個視圖腳本,你可以調用SpecialPurpose助手多達 次,只要你喜歡;它將被實例化一次,然後該PhpRenderer實例的生命依然存在 。

// remember, in a view script, $this refers to the Zend_View instance. 
echo $this->specialPurpose(); 
echo $this->specialPurpose(); 
echo $this->specialPurpose(); 

輸出會是這個樣子:

我所看到的 '加加' 1周時間(s)。我看過'The Jerk'2次(s)。我 看到「加加」 3時間(s)。

+0

謝謝你,它完美 – varan 2012-03-10 14:49:35

相關問題