Symfony 7中如何修改无效CSRF令牌的提示信息?
如何修改Symfony 7登录表单CSRF令牌无效的提示信息?
我在Symfony 7环境中安装了symfony/translation组件,想要修改登录表单CSRF令牌无效时的默认提示信息(原提示为“Invalid CSRF token.”),但多次配置后均未生效,具体情况如下:
当前配置
/config/packages/translation.yaml
framework: default_locale: en translator: default_path: '%kernel.project_dir%/translations' fallbacks: - en providers:
已尝试的无效操作
- 在
/translations/validators.en.yaml中添加配置:csrf_token: invalid: "Wakka wakka" - 按建议修改
validators.en.yaml内容:"Invalid CSRF token." : "wakka wakka" - 创建
/translations/security.en.xlf和/translations/security.en.yaml并配置翻译,但仍无效果 - 已执行缓存清除操作
正确解决方案
登录表单的CSRF验证错误信息属于Security组件的翻译域,而非表单验证的validators域,需按以下步骤配置:
- 在
translations/目录下创建security.en.yaml文件,内容如下:"Invalid CSRF token.": "自定义提示内容,例如:CSRF令牌无效,请刷新页面后重试" - 确保应用当前使用的locale为
en(与翻译文件的locale匹配),若使用其他语言,需创建对应locale的文件(如security.zh_CN.yaml) - 清除缓存:
php bin/console cache:clear # 生产环境需添加参数 php bin/console cache:clear --env=prod
关键说明
- Symfony中不同组件的错误提示对应不同的翻译域:登录CSRF错误属于
security域,表单字段验证错误属于validators域 - 翻译文件命名需遵循
[domain].[locale].[format]规则,例如security.en.yaml表示security域、英文语言、yaml格式的翻译文件 - 若原提示文本包含空格、标点等特殊字符,yaml键需用双引号包裹,确保解析正确
内容的提问来源于stack exchange,提问作者Quasipickle
相关产品推荐
相关产品推荐

