Laravel 9中$services变量未定义错误的排查与解决请求
问题解决步骤
1. 修复控制器变量传递错误
你已经在控制器中查询出$services集合,但返回视图时错误地传递了home变量,导致视图无法获取$services。修改控制器代码:
public function index() { $services = Services::all(); // 将$services传递给dashboard视图 return view('dashboard', compact('services')); }
也可以用数组方式传递变量,效果一致:
return view('dashboard', ['services' => $services]);
2. 修复Blade模板的循环变量错误
Blade循环中已经将集合的每一项赋值给$service,但你错误地使用$services(整个集合)去访问单个模型的属性,同时$product->id属于无效变量,需替换为$service->id:
@foreach($services as $service) <!--Cards--> <div class="row d-flex justify-content-evenly my-5" data-aos="fade-up" data-aos-duration="1000"> <!--Card 1--> <div class="card my-3" style="width: 18rem;"> <img src="{{ $service->image }}" class="card-img-top" alt="Service Image"> <div class="card-body"> <h5 class="card-title">{{ $service->name }}</h5> <p class="card-text">{{ $service->description }}</p> <div class="d-flex justify-content-evenly "> <button type="button" class="btn btn-outline-primary fw-bold">AVAIL</button> <button type="button" class="btn btn-primary"> <i class="fa-sharp fa-solid fa-cart-shopping"></i> <a href="{{ route('add.to.cart', $service->id) }}"> Add to Cart</a> </button> </div> </div> </div> @endforeach
额外调整:
- 给
src属性添加引号,符合HTML语法规范 - 修正了
i标签与a标签的嵌套顺序,避免结构错误
3. 可选检查项
- 确认控制器顶部已引入
Services模型:use App\Models\Services; - 视图路径建议去掉斜杠,Laravel规范写法为
view('dashboard')(对应resources/views/dashboard.blade.php)
内容的提问来源于stack exchange,提问作者jowehh
相关产品推荐
相关产品推荐

