Zend导航菜单标签中的换行符

时间:2011-06-14 15:59:51

标签: zend-framework zend-navigation

我需要创建一个< br />在使用Zend_navigation生成的菜单项的显示标签中标记,但似乎无法找到这样做的方法。

我的导航项在XML配置中定义为:

<registermachine>
<label>Register your Slitter Rewinder</label>                   
<controller>service</controller>
<action>register</action>
<route>default</route>
</registermachine>

我想在“你的”和“分切器”之间的输出HTML中强制使用一个标签,这样它就会显示在两行上,如下所示:

注册你的 分切复卷机

然而,我似乎无法做到这一点。显然在XML中解析使用
,并使用html实体意味着标签显示为:

注册您的&lt; br /&gt; Slitter Rewinder

有没有人有过可以提供建议的经验?

提前致谢!

3 个答案:

答案 0 :(得分:1)

内置没有这样的选项你必须使用部分

$partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial);
echo $this->navigation()->menu()->render();

http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.navigation.menu

您也可以尝试使用<label><![CDATA[Menu label<br/>Second line]]></label>

进行攻击

答案 1 :(得分:0)

我找到了一个(hacky)解决方案:

我更新了我的navigation.xml,以便在需要{br}标记的地方使用<br/>令牌,然后修改基本Zend/View/Helper/Navigation/Menu.php文件,如下所示:

htmlify函数内,已更改

$this->view->escape($label)

str_replace("{br}", "<br/>", $label)

我可以(也可能会)在某些时候用自己的方式覆盖Zend Library Menu View Helper,但至少现在已经覆盖了它。

答案 2 :(得分:0)

有一个用于转换html标签的escapeLabels布尔值,默认情况下为true。

您可以像这样设置导航

$this->navigation()
    ->menu()
    ->escapeLabels(false)
    ->...

http://framework.zend.com/apidoc/2.0/classes/Zend.View.Helper.Navigation.Menu.html#escapeLabels