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

Laravel中使用@forelse与@if分支出现unexpected 'endif'错误如何解决

错误原因排查
  • 核心语法错误:你嵌套使用的@forelse缺少必填的@empty分支。Laravel Blade 规定@forelse语法必须包含「循环执行块」+「空数据执行块(@empty)」+ 闭合标签@endforelse三部分,省略@empty会导致Blade编译模板时语法解析混乱,误判后续的@endif为多余标签,触发你遇到的报错。
  • 附加逻辑隐患:
    1. 当$surveillances中没有匹配$kader->username == $surveillance->nik_ortu的记录、或者匹配记录的status既不是1也不是0时,表格会缺失对应列,导致HTML结构错乱。
    2. 外层@forelse的@empty块中直接放置div标签在<tbody>内属于非法HTML结构,浏览器渲染会异常。
修复方案

如果你不需要处理内层循环的空数据展示场景,直接把内层的@forelse换成@foreach即可解决语法错误,同时补充逻辑兜底保证表格结构完整,修复后代码如下:

<tbody>
    @forelse ($kaders as $kader)
        <tr>
            <td>{{ $kader->username }}</td>
            @if($kader->status_user == '1')
                <td>Admin</td>
            @elseif($kader->status_user == '0')
                <td>Ibu / Guest</td>
            @else
                <td>未知身份</td>
            @endif
            @php $hasMatched = false; @endphp
            @foreach ($surveillances as $surveillance)
                @if($kader->username == $surveillance->nik_ortu)
                    @php $hasMatched = true; @endphp
                    @if($surveillance->status == '1')
                        <td>Aktif</td>
                    @elseif($surveillance->status == '0')
                        <td>NonAktif</td>
                    @else
                        <td>状态未知</td>
                    @endif
                @endif
            @endforeach
            @if(!$hasMatched)
                <td>无监测数据</td>
            @endif
            <td class="text-center">
                <form onsubmit="return confirm('Apakah Anda Yakin ?');" action="{{ route('kader.destroy', $kader->id) }}" method="POST">
                    <a href="{{ route('kader.edit', $kader->id) }}" class="btn btn-sm btn-primary"><i class="far fa-edit"></i> EDIT</a>
                    @csrf
                    @method('DELETE')
                    <button type="submit" class="btn btn-sm btn-danger"><i class="far fa-trash-alt"></i> HAPUS</button>
                </form>
            </td>
        </tr>
    @empty
        <tr>
            <td colspan="4" class="text-center">
                <div class="alert alert-danger">
                    Data Kader belum Tersedia.
                </div>
            </td>
        </tr>
    @endforelse
</tbody>

如果你坚持要使用@forelse,只需要在内层@forelse的@endforelse前补充@empty分支即可,示例:

@forelse ($surveillances as $surveillance)
    <!-- 原有循环逻辑 -->
@empty
    <td>无监测数据</td>
@endforelse

内容的提问来源于stack exchange,提问作者Dhargombeths

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:15:02