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

Laravel8如何解决Creating default object from empty value报错

报错原因

报错Creating default object from empty value由两处代码错误直接触发:

  • 你在控制器中直接通过$this->session访问session属性,Laravel控制器默认不存在这个可直接访问的属性,该值为null,直接给null值的flashdata属性赋值时,PHP会自动尝试将空值转为标准对象,从而抛出该异常。
  • with()传参格式错误:该方法仅支持两种传参形式,要么传入「键名、键值」两个参数,要么传入一个关联数组批量传递视图变量,你传入了两个索引数组,且第一个数组内直接写赋值表达式,不符合方法调用规范。
修复方案
  1. 移除with()方法内的session赋值逻辑,Laravel的session闪存通过session()助手函数或请求实例的session方法实现,不要嵌在视图传参逻辑里写。
  2. 修正with()的传参格式,传入关联数组即可把变量传递给blade模板。
修复后完整控制器代码
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function GetUsers(){
        // 闪存session数据
        session()->flash('flashdata', 'gs');
        // 正确传递视图变量
        return view('users')->with([
            'userslist' => ['id'=>'1','name'=>'dummy_text']
        ]);
    }
}
额外校验项
  • 确认路由绑定正确:routes/web.php中需要存在根路径的路由绑定,示例:Route::get('/', [UserController::class, 'GetUsers']);,否则访问http://127.0.0.1:8000/不会走到该控制器方法。
  • 视图中读取变量直接使用{{ $userslist['name'] }}即可获取测试数据,读取闪存session使用{{ session('flashdata') }}即可。
  • 如果偏好依赖注入的写法,也可以把Request实例注入到控制器方法中,通过$request->session()->flash('flashdata', 'gs')实现闪存,效果和助手函数完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:01:08