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 回答