ZF2:在导航菜单中渲染 HTML 标记(关闭 HTML 逃生器)


ZF2: Rendering HTML-Tags in navigation menu (turning off HTML-escaper)

问题:

如果你想在你的 Zend Framework 2 导航中放置 HTML 标记,例如这样:

<?php
'navigation' => array(
 default' => array(
         array(
             'label' => '<i class="fa fa-home"></i>Home',
             'route' => 'home',
         ),
...

我们希望使用视图助手显示它

<?php echo $this->navigation('navigation')->menu())?>

。ZF 将自动转义所有 HTML 标记。结果将是:

<i class="fa fa-home"></i>Home (No HTML markup was rendered.)

那么我们如何在菜单标签中呈现 HTML 标记呢?

我想自己回答这个问题,因为我在其他任何地方都找不到答案,这可能对你有帮助。

解决方案非常简单。视图帮助程序$this->navigation('navigation')->menu()有一个完全可以做到这一点的方法!该方法称为 ->escapeLabels() 。只需添加它,您就完成了:

<?php echo $this->navigation('navigation')->menu()->escapeLabels(false)?>

警告:当然,在呈现来自您不信任的来源(例如用户输入)的未转义文本时,要始终小心。