我想呈现一个HTML标签,如下所示:
$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)
)
);并且我在渲染时传递了正确的选项:
{{ knp_menu_render('WshCmsHtmlBundle:Builder:mainMenu', {'allow_safe_labels': true} ) }}但我的标签还在被逃脱。我做错了什么?
发布于 2013-04-23 20:13:28
好的,答案是!
在菜单项上设置额外的菜单项不是通过' extra‘键,而是通过'extras’键。因此,当您像这样设置项目时:
$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)
)
);它工作得很好!
发布于 2014-10-01 07:55:11
要实现这一点,需要两个步骤。
1. MenuBuilder
您必须在extras中将safe_label设置为true。请注意,您现在可以在标签中编写HTML。
$menu->addChild('Home<i><b></b></i>', array(
'route' => 'homepage',
'extras' => array(
'safe_label' => true
),
));2.小树枝
您必须过滤knp_menu_render()的输出,以便它打印原始的HTML (参见documentation)。
{{ knp_menu_render('main', {'allow_safe_labels': true}) | raw }}警告
请注意,这可能是危险的。从documentation
请谨慎使用,因为如果标签来自用户,它可能会在您的应用程序中产生一些XSS漏洞。
发布于 2015-04-03 22:45:40
我使用FyodorX的方法添加了一个强标记。它的效果很好,但我必须说,原始过滤器并不是必需的
https://stackoverflow.com/questions/16152396
复制相似问题