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

Laravel项目触发ErrorException: Undefined variable $siswa报错求解决

问题原因

这个错误本质是siswa.blade.php模板渲染时,没有接收到后端传递的$siswa变量,大概率是以下两种情况导致:

  1. Laravel 8及以上版本路由配置写法不兼容,控制器方法未被正确触发,没有执行变量传递逻辑
  2. 你访问了其他未关联SiswaController@index方法的路由直接渲染该模板

解决步骤

1. 修正路由配置(优先排查)

Laravel 8之后默认取消了路由的全局控制器命名空间前缀,你当前的字符串格式路由写法无法正确触发控制器方法,请修改web.php代码为:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SiswaController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', [SiswaController::class, 'index']);
Route::get('/siswa', [SiswaController::class, 'index']);
Route::get('/siswa/export_excel', [SiswaController::class, 'export_excel']);
Route::post('/siswa/import_excel', [SiswaController::class, 'import_excel']);

2. 验证控制器逻辑正常

你可以在SiswaController的index方法中加调试代码,确认变量正常生成:

public function index()
{
    $siswa = Siswa::all();
    // 访问/siswa地址如果能输出数据集,说明控制器查询逻辑无问题
    dd($siswa);
    return view('siswa',['siswa'=>$siswa]);
}

调试正常后删除dd代码即可。

3. 模板增加容错判断

可在blade模板中增加变量存在判断,避免极端情况报错:

<a href="/siswa/export_excel" class="btn btn-success my-3" target="_blank">EXPORT EXCEL</a>

<table class='table table-bordered'>
    <thead>
        <tr>
            <th>No</th>
            <th>Nama</th>
            <th>NIS</th>
            <th>Alamat</th>
        </tr>
    </thead>
    <tbody>
        @if(isset($siswa))
            @php $i=1 @endphp
            @foreach($siswa as $s)
            <tr>
                <td>{{ $i++ }}</td>
                <td>{{$s->nama}}</td>
                <td>{{$s->nis}}</td>
                <td>{{$s->alamat}}</td>
            </tr>
            @endforeach
        @else
            <tr>
                <td colspan="4" class="text-center">暂无学生数据</td>
            </tr>
        @endif
    </tbody>
</table>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:09:00