簡體   English   中英

Laravel 在會話中存儲數組

[英]Laravel Store Array in Session

我在會話中存儲數組時遇到問題。 我正在制作購物車,但它似乎不起作用。

public function __construct(){

  $product = array(1,2,3,4);
  Session::push('cart', $product);

}

然后像這樣在視圖中檢索它。

{{Session::get('cart')}}

但是我不斷收到這樣的錯誤。

htmlentities() expects parameter 1 to be string, array given

有關如何創建存儲一系列項目的購物車的任何線索和建議。

如果您需要將 session 中的數組用作字符串,則需要像這樣使用 Collection:

$product = collect([1,2,3,4]);
Session::push('cart', $product);

當您在 html 中使用{{Session::get('cart');}} ,這將使它起作用。 請注意Session::push因為它會在會話中始終附加新產品。 您應該使用Session::put以確保產品將始終更新。

您正在會話中存儲一個數組,並且由於{{ }}需要一個字符串,因此您不能使用{{Session::get('cart')}}來顯示該值。

{{ $var }}與編寫echo htmlentities($var) (一個非常簡單的例子)。

相反,您可以執行以下操作:

@foreach (Session::get('cart') as $product_id)
    {{$product_id}}
@endforeach

如果使用“push”,在會話中最初創建數組時,數組將如下所示:

[
    0 => [1,2,3,4]
]

相反,您應該使用“放置”:

$products = [1,2,3,4];
$request->session()->put('cart', $products);

任何后續值都應推送到會話數組中:

$request->session()->push('cart', 5);

您可以使用.

$product = array(1,2,3,4);
Session::put('cart.product',$product);

您可以在會話中聲明一個數組,如$cart = session('data', []);

$cart[] = $product;

session([ 'data' => $cart]);

return session('data', []);

你也可以這樣做:

  $data = collect($Array); 
  Session()->put('data', $data);
  return view('pagename');

暫無
暫無

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

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