Laravel视图Undefined variable $ikus报错求助
Laravel视图中$ikus变量未定义问题排查方案
错误信息
ErrorException
Undefined variable $ikus (View: D:\XAMPP\htdocs\SKP-PA-BKT\resources\views\iku.blade.php)
Laravel提示:$ikus is undefined
相关代码片段
iku.blade.php
@extends('layouts.sidebar') @section('content') <section class="main-panel"> <div class="container"> <div class="section-title"> </div> <div class="row"> <div class="col-md-12"> <div class="table-wrap"> <table class="table table-responsive-xl"> <thead> <tr> <th>No </th> <th>Opsi</th> </tr> </thead> <tbody> <tr class="alert"> @foreach ($ikus as $iku) <td>{{ $iku->id }}</td> @endforeach </tr> </tbody> </table> </div> </div> </div> </div> </section> @endsection
IkuController.php
<?php namespace App\Http\Controllers use App\Models\Iku; use Illuminate\Http\Request; class IkuController extends Controller { public function getIku() { $ikus = Iku::all(); //dd($ikus); return view('iku', compact('ikus')); } }
web.php
<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Auth; use App\Http\Controllers\IkuController; Auth::routes(); Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); Route::get('/indikator-kinerja', [IkuController::class, 'getIku'])->name('iku');
排查方向
- 确认路由访问方式:必须通过
/indikator-kinerja路径或route('iku')命名路由访问页面,不能直接打开视图文件。直接访问视图会跳过控制器逻辑,变量自然无法传递。 - 修复控制器命名空间语法错误:IkuController中
namespace App\Http\Controllers末尾缺少分号;,这会导致控制器无法被正确加载,路由无法触发对应方法。修正为:namespace App\Http\Controllers; - 检查视图文件有效性:确认
resources/views/iku.blade.php存在,文件名无拼写错误(包括大小写、.blade.php后缀),Laravel视图名称区分大小写,需和view('iku')中的名称完全匹配。 - 清除视图缓存:Laravel会缓存编译后的视图,修改后缓存未更新可能导致变量不生效。执行命令清除缓存:
php artisan view:clear - 排查中间件拦截:如果路由绑定了中间件,检查中间件是否有提前返回的逻辑,导致控制器方法未执行。可临时注释路由上的中间件测试。
- 验证控制器方法是否执行:取消控制器中
dd($ikus)的注释,访问路由后查看是否有数据输出。若dd未执行,说明控制器方法未被调用;若有输出,说明变量已存在,可能是视图渲染环节的问题。 - 检查布局文件冲突:视图继承了
layouts.sidebar,检查该布局文件是否存在同名变量$ikus,或布局中的错误导致子视图变量无法正常传递。
内容的提问来源于stack exchange,提问作者Glaceon Comfey
相关产品推荐
相关产品推荐

