Laravel Blade中@foreach后出现未预期endforeach语法错误排查
Laravel 5.8 Blade语法错误原因及解决办法
问题原因
你遇到的syntax error, unexpected 'endforeach' (T_ENDFOREACH)错误,是因为Laravel 5.8的Blade编译器在解析空的@php @endphp块时,会生成不合法的PHP代码结构。当@foreach内部存在完全空的PHP代码块时,Blade编译后的代码会出现语法断层,导致PHP解释器无法正确识别后续的@endforeach指令。
在@foreach后使用@php是否有问题?
本身没问题,只要@php块内不是完全空的。不管是在@foreach里还是其他Blade指令内,只要@php块包含合法的PHP代码(哪怕只是一行注释、一个分号),都能正常编译运行。
解决办法
- 给空的
@php块填充内容:哪怕暂时不需要逻辑,也可以加个注释或者分号占位,比如:
@php($counter_foreach = 0) @foreach($memnames as $mem=>$memname) @php // 后续要加的PHP逻辑写这里,先留个注释占位 @endphp @endforeach
- 暂时不需要的话直接删掉空的
@php @endphp标签,等需要编写PHP逻辑时再添加。
内容的提问来源于stack exchange,提问作者Pouya Vaghefi
相关产品推荐
相关产品推荐

