Laravel运行报ErrorException Undefined variable $siswa错误如何解决
问题原因
你在站点根路径/对应的路由中,直接返回了siswa视图,但没有向视图传递$siswa变量,而siswa.blade.php文件中存在遍历$siswa变量的逻辑,因此触发了未定义变量的异常。
访问/siswa路径不会触发该错误,因为该路径走SiswaController@index逻辑,方法内已经查询了学生数据并将$siswa变量传递给视图。
修复方案
你可以选择以下任意一种方案修复:
- 方案1:修改根路由逻辑,避免直接返回无变量的视图
可以直接将根路径跳转到学生列表页:
如果你需要根路径直接展示学生列表,就补上变量传递逻辑:Route::get('/', function () { return redirect('/siswa'); });Route::get('/', function () { $siswa = \App\Siswa::all(); return view('siswa', ['siswa' => $siswa]); }); - 方案2:给Blade视图增加变量存在判断,兼容无变量场景
把视图中遍历学生数据的部分修改为如下代码,变量不存在时也不会报错:<tbody> @if(isset($siswa) && $siswa->count()) @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>
内容的提问来源于stack exchange,提问作者Lucas Futami
相关产品推荐
相关产品推荐

