首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在KnpMenuBundle中禁用标签的HTML转义

如何在KnpMenuBundle中禁用标签的HTML转义
EN

Stack Overflow用户
提问于 2013-04-23 00:46:47
回答 4查看 3.6K关注 0票数 12

我想呈现一个HTML标签,如下所示:

代码语言:javascript
复制
$menu->addChild('Dashboard', array(
    'route' => 'dashboard', 
    'label' => '<i class="fa-icon-bar-chart"></i><span class="hidden-tablet"> Dashboard</span></a>',
    'extra' => array('safe_label' => true)
    )
);

并且我在渲染时传递了正确的选项:

代码语言:javascript
复制
{{ knp_menu_render('WshCmsHtmlBundle:Builder:mainMenu', {'allow_safe_labels': true} ) }}

但我的标签还在被逃脱。我做错了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-23 20:13:28

好的,答案是!

在菜单项上设置额外的菜单项不是通过' extra‘键,而是通过'extras’键。因此,当您像这样设置项目时:

代码语言:javascript
复制
$menu->addChild('Dashboard', array(
    'route' => 'dashboard', 
    'label' => '<i class="fa-icon-bar-chart"></i><span class="hidden-tablet"> Dashboard</span></a>',
    'extras' => array('safe_label' => true)
)
);

它工作得很好!

票数 17
EN

Stack Overflow用户

发布于 2014-10-01 07:55:11

要实现这一点,需要两个步骤。

1. MenuBuilder

您必须在extras中将safe_label设置为true。请注意,您现在可以在标签中编写HTML

代码语言:javascript
复制
$menu->addChild('Home<i><b></b></i>', array(
    'route' => 'homepage',
    'extras' => array(
        'safe_label' => true
    ),
));

2.小树枝

您必须过滤knp_menu_render()的输出,以便它打印原始的HTML (参见documentation)。

代码语言:javascript
复制
{{ knp_menu_render('main', {'allow_safe_labels': true}) | raw }}

警告

请注意,这可能是危险的。从documentation

请谨慎使用,因为如果标签来自用户,它可能会在您的应用程序中产生一些XSS漏洞。

票数 11
EN

Stack Overflow用户

发布于 2015-04-03 22:45:40

我使用FyodorX的方法添加了一个强标记。它的效果很好,但我必须说,原始过滤器并不是必需的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16152396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档