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

Laravel Blade模板报错:syntax error, unexpected token '@' 求助

Blade模板解析报错:意外的标记"@"排查与解决

问题描述

Laravel项目中,视图文件/data/sites/web/admin/report/rec_revenue.blade.php出现语法错误,提示"意外的标记'@'",此前代码运行正常,怀疑是Blade对@php语法解析异常。涉及代码片段如下:

<tbody>
@foreach ($arrData as $k => $data)
@php($i = 1)
@php($yearTotal = 0)
@php($futureYearTotal = 0)
@foreach ($data as $k2 => $yd)
   <tr>
   <td><h6><span class="badge bg-light">{{$k}} {{ $k2 }}</span></h6></td>
   <td class="total-amount" align="right">{{ number_format($yd['total']??0, 2, ',', ' ') }}{{ $yd['currency'] }}</td>
   </tr>
@php($yearTotal += $yd['total'])
@endforeach
@endforeach
</tbody>

错误表现为模板解析时无法识别@php标记,抛出语法错误。

排查与解决步骤

  • 检查Laravel版本兼容性:不同版本的Laravel对Blade语法支持有差异,Laravel 5.4及以前版本不支持@php($var = value)这种简写形式,必须使用完整的@php ... @endphp包裹代码。将简写替换为完整语法:
    @php
        $i = 1;
        $yearTotal = 0;
        $futureYearTotal = 0;
    @endphp
    <!-- 循环内的@php同理替换 -->
    @php
        $yearTotal += $yd['total'];
    @endphp
    
  • 清理Blade缓存:服务器可能缓存了旧的编译模板,执行以下命令清除缓存:
    php artisan view:clear
    php artisan cache:clear
    
  • 检查文件编码与特殊字符:查看视图文件是否存在UTF-8 BOM或不可见特殊字符,这类字符会导致Blade解析器出错。使用编辑器(如VS Code)打开文件,确保编码为UTF-8无BOM格式。
  • 验证服务器环境变化:确认服务器是否升级了PHP版本或Laravel依赖包,版本不兼容可能引发解析问题。运行composer install重新安装依赖,确保版本匹配项目要求。
  • 检查模板语法拼写:确认所有Blade指令(如@foreach、@php)拼写正确,没有遗漏闭合标签或多余符号,统一将{{$k}}写成{{ $k }}格式,避免解析歧义。

内容的提问来源于stack exchange,提问作者Junaid Ali Ansari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:26:24