1

ビューでインスタンスをレンダリングするとZend_Nagivation、デフォルトでアンカー タグにビュー ヘルパーのプレフィックス、ダッシュ、ページの ID が割り当てられた ID が割り当てられます。

ページ 1 のアンカー ID の例 (すべて同じZend_Nagivationインスタンスを使用):

  • Zend_View_Helper_Navigation_Menu= "メニュー1"
  • Zend_View_Helper_Navigation_Breadcrumbs= "ブレッドクラム-1"
  • My_View_Helper_Navigation_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;
        }
    }
}
4

1 に答える 1

1

犯人はZend_View_Helper_Navigation_HelperAbstract::_normalizeId()、必要な各ナビゲーション ビュー ヘルパーの独自のカスタム バージョンを作成する以外に解決策がないことです。

于 2010-12-09T03:16:28.993 に答える