ZF2:渲染 HTML-导航菜单中的标签(关闭 HTML-escaper)

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)?>

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