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

Laravel 9控制器中如何创建全局数组变量?解决未定义变量报错

解决Laravel控制器中公共属性访问报错的问题

你遇到的Undefined variable $loginCred错误,核心原因是在类方法中访问自身的公共属性时,没有使用$this->前缀,PHP会把直接写的$loginCred当成局部变量,而非你定义的类属性。

另外你的callback方法里还有逻辑错误:$loginCred是数组类型,不能直接调用session()方法,这里应该直接操作session实例。

修正后的代码:

class AuthController extends Controller
{
    public $loginCred = [];

    public function postLogin(Request $request){
        // 使用$this->访问类的公共属性
        $request['email'] = $this->loginCred['email'];
        $request['password'] = $this->loginCred['password'];
        // 后续代码...
        return redirect()->away($authUrl);
    }

    public function callback(Request $request)
    {
        // 正确的session重写写法
        $request->session()->regenerate();
        // 若需将loginCred存入session,可添加此行
        // $request->session()->put('login_cred', $this->loginCred);
        return redirect()->route('home');
    }
}

补充说明:

  • 类的非静态属性必须通过$this->属性名在类内部方法中访问;若是静态属性,才用self::属性名或类名::属性名。
  • 如果你想在多个请求之间共享loginCred的数据,控制器的公共属性无法实现(每个请求都会实例化新的控制器对象),这种场景下应该用Session或缓存来存储数据。

内容的提问来源于stack exchange,提问作者Joshua Anrico

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:50:01