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

Laravel中控制器传参至Blade提示变量未定义问题排查

问题解决:Blade视图提示变量未定义,但控制器已传参的问题

你的代码存在三个关键错误,导致视图无法获取到$a和$b变量:

1. 路由配置完全错误

当前的/about路由闭包里,你调用AboutController::info()后,把这个方法返回的视图对象赋值给了name变量,然后又自己返回了一个新的view('about')。这相当于完全忽略了控制器里传递的$a和$b,直接返回了一个没有任何自定义变量的视图,自然会提示变量未定义。

正确的路由应该直接指向控制器的方法,让Laravel来处理视图渲染:

Route::get('/about', [AboutController::class, 'info']);

2. Blade模板存在语法错误

Blade指令(@extends、@section)后面不需要加分号,分号会被当成普通文本输出,同时干扰Blade的模板解析,可能导致变量无法正常渲染。

修正后的about.blade.php:

@extends('layout.template')
@section('homeContainer')

<p> {{ $a }} </p>
<br>
<p>{{ $b }}</p>
@endsection

3. 模型方法名大小写不一致(潜在问题)

模型里定义的方法是Info()(大写开头),但控制器里调用的是AboutModel::info()(小写开头)。虽然PHP对静态方法调用的大小写不敏感,但这种不一致可能会导致后续维护时出现混淆,建议统一成小写:

// AboutModel.php
public static function info(){
    $a = "This value is from model";
    return $a;
}

为什么之前dd看起来正常?

你在控制器里用dd($a)和dd($b)能看到值,是因为控制器的方法确实执行了,但路由闭包的逻辑覆盖了控制器返回的视图,最终渲染的是路由里重新返回的空参数视图,所以视图里找不到变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:35:13