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
相关产品推荐
相关产品推荐

