如何设置Zend_View_Helper_Navigation_XXX使用的id前缀

时间:2010-12-08 22:38:18

标签: php zend-framework zend-framework-mvc

当我在视图中渲染Zend_Nagivation实例时,默认情况下,锚标记的id分配有视图助手的前缀,后跟破折号,然后是页面的id。

第1页的锚点ID的示例(全部使用相同的Zend_Nagivation实例):

  • Zend_View_Helper_Navigation_Menu =“menu-1”
  • Zend_View_Helper_Navigation_Breadcrumbs =“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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

罪魁祸首是Zend_View_Helper_Navigation_HelperAbstract::_normalizeId()我认为没有其他解决办法,只能创建你需要的每个导航视图助手的自定义版本。