Laravel表单中@csrf被识别为普通HTML文本无法生效问题求助
可能的原因及对应解决方法:
- 文件后缀不符合Blade解析要求
Laravel的@开头的Blade指令仅会在后缀为.blade.php的模板文件中被解析,如果你当前表单所在的模板文件仅为.php后缀,没有加.blade标识,Blade引擎不会处理@csrf指令,会直接将其作为普通文本输出。 - 表单区域被禁止解析Blade指令
检查表单代码所在位置的上层代码,是否被@verbatim指令包裹,该指令的作用就是标记区域内的Blade语法不被解析,原样输出。另外也排查是否有人把@csrf写在了Blade变量输出语法里,比如写成了{{ '@csrf' }},也会导致原样输出。 - 指令存在不可见特殊字符
如果是从其他地方复制粘贴的@csrf代码,有可能携带了零宽空格之类的不可见特殊字符,夹在@和csrf中间,导致Blade无法识别这是合法指令。可以手动删除后重新手打一遍@csrf测试。 - 模板加载错误
排查当前页面实际渲染的模板文件是否是你修改的那份,有可能存在路径配置错误、多套模板的情况,实际生效的模板文件里的代码和你贴出来的不一致。
临时替代方案
如果暂时排查不出根因,可以直接用原生写法代替@csrf,功能完全一致:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
内容的提问来源于stack exchange,提问作者Kuroi23
相关产品推荐
相关产品推荐

