簡體   English   中英

如何在 laravel ZE1BFD762321E409CEE364AC0B6E849 的 class 屬性中分配 session 數據

[英]how to assign session data in class property in laravel php

I'm trying to set session data to class property in Laravel controller but getting null in controller functions please help me with how to deal with that or suggest me best approach for that.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Product;

class InventoryController extends Controller
{
    public $company_id;
    public function __construct()
    {   
        $company_id = session('last_company');
        $this->company_id = $company_id;
    }
    public function index()
    {
        dd($this->company_id);
        $products = Product::where('company_id',$this->company_id)->get();
        // dd($products);
        return view('Inventory.view',compact($products));
    }
}

我在索引 function 中將$this->company_id作為null但我可以在索引 ZC1C425268E68385D1AB5074C17A94F 中的 dd(session('last_company'))時獲取數據

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Product;

class InventoryController extends Controller
{
    public $company_id;
    public function __construct()
    {   
        $company_id = session('last_company');
        $this->company_id = $company_id;
    }
    public function index()
    {
        dd(session('last_company'));
        $products = Product::where('company_id',session('last_company'))->get();
        return view('Inventory.view',compact($products));
    }
}

您得到null的原因是 session 管理器Illuminate\Session\Middleware\StartSession是一個中間件,並且在那時它沒有被引導。 此外,沒有理由將 session 數據保留在 controller 中,因為控制器的__destruct方法將在您將響應返回到路由鏈時被調用。 你可以在這里閱讀更多。 取而代之的是,你可以試試這個,

use Illuminate\Http\Request;
public function index(Request $request)
{
    $products = Product::where('company_id', $request->session()->get('company_id')->get();
    return view('Inventory.view',compact($products));
}

如果指定的值不存在,您可能希望將默認值傳遞給get方法的第二個參數以返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM