【问题标题】:laravel 8 session doesn't save datalaravel 8 会话不保存数据
【发布时间】:2022-09-23 15:32:55
【问题描述】:

我正在尝试保存一个数组以进行结帐,但是当我打印会话时它给出了 null

namespace App\\Http\\Livewire;
use App\\Orders;
use Livewire\\Component;
use Illuminate\\Support\\Facades\\Auth;
use Illuminate\\Http\\Request;
use Cart;
use Carbon\\Carbon;
public function setAmountForCheckout()
    {
        if(session()->has(\'coupon\'))
        {
            session()->put(\'checkout\',[
                \'discount\'=>$this->discount,
                \'subtotal\'=>$this->subtotalAfterDiscount,
                \'total\'=>$this->totalAfterDiscount,
            ]);
        }
        else
        {
            session()->put(\'checkout\',[
                \'discount\'=>0,
                \'tax\'=>Cart::instance(\'cart\')->tax(),
                \'subtotal\'=>Cart::instance(\'cart\')->subtotal(),
                \'total\'=>Cart::instance(\'cart\')->total(),
            ]);    
            session()->save();
        }
        
    }
public function placeOrder(Request $request)
    {
        dd(session()->get(\'checkout\'));
        $this->validate([
            \'first_name\' => \'required|min:4|string\',
            \'Phone_number\' => \'required|digits:11\'
        ]);
        $order=new Orders();
        $order->user_id=Auth::id();
        $order->cust_name=$this->first_name;
        $order->phone=$this->Phone_number;
        $order->subtotal=session()->get(\'checkout\')[\'subtotal\'];
        $order->discount=session()->get(\'checkout\')[\'discount\'];
        $order->total=session()->get(\'checkout\')[\'total\'];
        $order->status=\'ordered\';
        $order->is_shipping=$this->haveShipping ? 1:0;
        foreach(Cart::instance(\'cart\')->content() as $items)
        {   
            $orderItem= new OrderItems();
            $orderItem->product_id=$items->id;
            $orderItem->price=$item->price;
            $orderItem->order_id=$order->id;
            $orderItem->quantity=$item->qty;
            $orderItem->save();
        }
        if($this->haveShipping)
        {
            $this->validate([
                \'Address\'=>\'required|min:4\',
                \'shipping_fee\'=>\'required|numeric\'
            ]);
            $order->address=$this->Address;
            $order->delivery=$this->shipping_fee;
        }
        $order->save();
        Cart::instance(\'cart\')->destroy();
        session()->forget(\'checkout\');
    }

当我删除 dd 时,它给了我错误“尝试访问 null 类型值的数组偏移量” 我试图找出会话有什么问题。 我也检查了购物车是否可以正常工作,但我发现它运行良好并提供数据。

    标签: laravel-8 laravel-livewire


    【解决方案1】:

    消除

    session()->save();
    

    根据https://laravel.com/docs/8.x/session#storing-data,这不是必需的

    【讨论】:

      猜你喜欢
      • 2021-06-28
      • 2021-12-21
      • 2016-05-23
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      相关资源
      最近更新 更多