You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony6.3+PHP8.2表单HTML输入Sanitize配置不生效问题

问题原因及解决方案

核心问题是你把字段级的HTML清理选项配置到了表单级的默认选项中,Symfony的sanitize_html和sanitizer是单个表单字段的配置项,而非整个表单的全局配置,因此表单内的content字段并未继承到这些规则,导致清理未生效。

修复步骤

  1. 调整表单字段配置
    在ActivityRichTextFormType的buildForm方法中,直接为content字段添加清理选项:

    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('content', TextareaType::class, [
                'sanitize_html' => true,
                'sanitizer' => 'app.post_sanitizer'
            ])
        ;
    }
    
  2. 验证其他必要条件

    • 确保已安装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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:09:55