Symfony动态表单从JSON读取的label含HTML标签未解析渲染如何解决?
解决方案
你之前的尝试不生效的核心原因是:Symfony表单组件在渲染字段标签时,默认会对label内容做HTML转义,这个转义发生在表单视图生成阶段,后续在Twig中对整个表单渲染结果加raw、关闭自动转义都不会生效,因为标签内容已经被提前转义为HTML实体了。
修复方法
在添加表单字段时,额外传入label_html选项并设为true即可,该参数会告知表单组件渲染标签时跳过HTML转义:
$form->add('city', ChoiceType::class, [ 'choices' => $json[0]->options, 'label' => $json[0]->label, 'label_html' => true, // 新增这一行配置 ]);
如果是动态遍历JSON生成多个表单字段,只需要在每个字段的配置中都加上这个参数即可,无需改动后续的Twig渲染逻辑,仍然可以用{{ form(form) }}一次性渲染整个表单。
内容的提问来源于stack exchange,提问作者sisko
相关产品推荐
相关产品推荐

