Php 如何设置Zend\u View\u Helper\u Navigation\u XXX使用的id前缀
当我在视图中呈现一个Php 如何设置Zend\u View\u Helper\u Navigation\u XXX使用的id前缀,php,zend-framework,zend-framework-mvc,Php,Zend Framework,Zend Framework Mvc,当我在视图中呈现一个Zend_Nagivation实例时,默认情况下,锚定标记的id被指定为视图帮助器的前缀,后面是破折号,然后是页面的id 第1页的锚id示例(均使用相同的Zend_Nagivation实例): Zend\u查看\u帮助程序\u导航\u菜单=“菜单-1” Zend\u View\u Helper\u Navigation\u Breadcrumbs=“Breadcrumbs-1” My\u View\u Helper\u Navigation\u MyMenu=“MyMenu
Zend_Nagivation
实例时,默认情况下,锚定标记的id被指定为视图帮助器的前缀,后面是破折号,然后是页面的id
第1页的锚id示例(均使用相同的Zend_Nagivation
实例):
=“菜单-1”Zend\u查看\u帮助程序\u导航\u菜单
=“Breadcrumbs-1”Zend\u View\u Helper\u Navigation\u Breadcrumbs
=“MyMenu-1”My\u View\u Helper\u Navigation\u MyMenu
解决方案 指定前缀可以通过添加以下代码来完成,然后在渲染时调用
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;
}
}
}
罪魁祸首是
Zend\u-View\u-Helper\u-Navigation\u-HelperAbstract::\u-normalizeId()
,除了创建您所需的每个导航视图帮助器的自定义版本之外,我看不到其他解决方案。罪魁祸首是Zend\u-View\u-HelperAbstract:\u-HelperAbstract:\u-normalizeId()
我认为除了创建您所需的每个导航视图帮助器的自定义版本之外,没有其他解决方案。导航是如何配置的?从伊尼?类?在Zend_Navigation
实例中,我目前有四个,两个是从数据库构建的,两个是从xml文件构建的。无论数据源是什么,它们都会发生这种行为。你知道你可以调用你的助手“Menu”而不是“MyMenu”,在这种情况下,插件加载程序将代替ZF加载你的助手one@Phil-谢谢!我记得在最初编写帮助程序时遇到命名问题。我可能把一个问题错当成了另一个问题。这里是线索:啊,忘了导航助手代理系统。重载这将需要更多的工作。如何配置导航?从伊尼?类?在Zend_Navigation
实例中,我目前有四个,两个是从数据库构建的,两个是从xml文件构建的。无论数据源是什么,它们都会发生这种行为。你知道你可以调用你的助手“Menu”而不是“MyMenu”,在这种情况下,插件加载程序将代替ZF加载你的助手one@Phil-谢谢!我记得在最初编写帮助程序时遇到命名问题。我可能把一个问题错当成了另一个问题。这里是线索:啊,忘了导航助手代理系统。超载这将需要更多的工作。我现在明白了,菲尔,谢谢!它使用get_class()
,然后使用类名的最后一部分(下划线分隔)和小写字母作为前缀。您的回答引导我找到了解决方案,因此我接受它。谢谢你,菲尔!我现在明白了,菲尔,谢谢!它使用get_class()
,然后使用类名的最后一部分(下划线分隔)和小写字母作为前缀。您的回答引导我找到了解决方案,因此我接受它。谢谢你,菲尔!