Symfony6.3+PHP8.2表单HTML输入Sanitize配置不生效问题
问题原因及解决方案
核心问题是你把字段级的HTML清理选项配置到了表单级的默认选项中,Symfony的sanitize_html和sanitizer是单个表单字段的配置项,而非整个表单的全局配置,因此表单内的content字段并未继承到这些规则,导致清理未生效。
修复步骤
调整表单字段配置
在ActivityRichTextFormType的buildForm方法中,直接为content字段添加清理选项:public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('content', TextareaType::class, [ 'sanitize_html' => true, 'sanitizer' => 'app.post_sanitizer' ]) ; }验证其他必要条件
- 确保已安装
symfony/html-sanitizer组件:composer require symfony/html-sanitizer - 确认Symfony版本在6.2及以上(该表单清理功能从6.2版本开始引入)
- 检查
html_sanitizer.yaml的规则配置正确,示例如下:framework: html_sanitizer: sanitizers: app.post_sanitizer: allow_elements: ['p', 'b', 'i', 'u', 'a'] allow_attributes: a: ['href', 'target']
- 确保已安装
调整后重新测试,提交包含<script>标签的内容时,字段会自动应用你定义的app.post_sanitizer规则进行清理。
内容的提问来源于stack exchange,提问作者pok_net
相关产品推荐
相关产品推荐

