2010-12-08 16 views
1

當我在我的視圖中呈現Zend_Nagivation實例時,默認情況下,定位標記的ID分配了視圖助手的前綴,後面跟着破折號,然後是頁面的ID。第1頁的錨ID的如何設置Zend_View_Helper_Navigation_XXX使用的ID前綴

實例(全部使用同一Zend_Nagivation實例):

  • Zend_View_Helper_Navigation_Menu = 「菜單1」
  • Zend_View_Helper_Navigation_Breadcrumbs = 「麪包屑-1」
  • My_View_Helper_Navigation_MyMenu =「mymenu- 1「

這對大多數情況是完美的,但我想手動設置該前綴,我找不到一種方法來做到這一點。


解決方案

指定前綴可以通過添加下面的代碼,然後調用setIdPrefix()渲染時完成:

class My_View_Helper_Navigation_MyMenu extends Zend_View_Helper_Navigation_Menu 
{ 
    protected $_idPrefix = null; 

    /** 
    * Set the id prefix to use for _normalizeId() 
    * 
    * @param string $prefix 
    * @return My_View_Helper_Navigation_MyMenu 
    */ 
    public function setIdPrefix($prefix) 
    { 
     if (is_string($prefix)) { 
      $this->_idPrefix = $prefix; 
     } 

     return $this; 
    } 

    /** 
    * Use the id prefix specified or proxy to the parent 
    * 
    * @param string $value 
    * @return string 
    */ 
    protected function _normalizeId($value) 
    { 
     if (is_null($this->_idPrefix)) { 
      return parent::_normalizeId($value); 
     } else { 
      return $this->_idPrefix . '-' . $value; 
     } 
    } 
} 
+0

如何配置導航?從ini?類? – Iznogood 2010-12-08 22:59:23

+0

`Zend_Navigation`實例,我目前有四個,兩個是從數據庫中構建的,另外兩個來自xml文件。無論數據源如何,都會發生這種情況。 – Sonny 2010-12-08 23:03:29

回答

1

罪魁禍首是Zend_View_Helper_Navigation_HelperAbstract::_normalizeId()爲此我看不出其他解決方案比創建您自己的定製版本的每個導航視圖助手,你需要的。