/ / Jak wysłać wartości do sesji? Laravel - php, laravel

Jak wysłać wartości do sesji? Laravel - php, laravel

Robię wózek, na razie mogę dodawać produkty do sesji i przeglądać je w moim koszyku, to jest moje funkcje CartController:

Add funkcjonować:

public function add(Request $request, $id)
{
$request->session()->push("cart", $id);
flash()->success("Prekė sėkmingai pridėtą į krepšelį.");
return redirect("/prekes");
}

Show funkcjonować:

public function show()
{

$products = session("cart");
$products = Product::find($products);
return view("cart.show", compact("products"));
}

A to jest Product strona:

    <div class="mainContainer">
<h1>{{$product->title}} <i class="fa fa-shopping-cart" aria-hidden="true"></i></h1><br>
<img style="height: 200px" src="/images/{{$product->image}}"><br>
<p>{!! $product->description !!}</p>
<div class="bootstrap-wrapper">
<a style="float: right; margin-top: -150px; margin-right: 300px; font-size: 24px"
href="/prideti-i-krepseli/{{$product->id}}" class="btn btn-success">
<i class="glyphicon glyphicon-shopping-cart"></i> Pridėti į krepšelį</a><br>
{{number_format($product->price, 2, ".", ",")}} EUR
</div>
</div>

Więc jeśli chcę wysłać pewne wartości z formularza, w jaki sposób wstawiłbym je do sesji? Czy powinienem napisać kod metody postu? add funkcja? Czy możesz dać mi przykład? Chcę utworzyć formularz, który ustawi ilość dla każdej pozycji.

Odpowiedzi:

1 dla odpowiedzi № 1

Z tego co rozumiem, chcesz dodać tablicę wartości do sesji (koszyk może być reprezentowany jako tablica).

Aby przechowywać wartości w tablicy, a nie jako pojedynczą zmienną sesji, musisz ją zmienić

public function add(Request $request, $id)
{
$request->session()->push("cart", $id);
flash()->success("Prekė sėkmingai pridėtą į krepšelį.");
return redirect("/prekes");
}

z

public function add(Request $request, $id, $quantity)
{
$product_from_db = Product::find($id);
$product = [];
$product["id"] = $id;
//you can add all data you need like this etc...
$product["name"] = $product_from_db->name;
$product["quantity"] = $quantity;
$request->session()->push("cart", array_merge((array)Session::get("cart",[]), $product));
flash()->success("Prekė sėkmingai pridėtą į krepšelį.");
return redirect("/prekes");
}

Aby odebrać dane z wymiany sesji

public function show()
{
$products = session("cart");
$products = Product::find($products);
return view("cart.show", compact("products"));
}

z

public function show()
{
$products = session("cart");
return view("cart.show", compact("products"));
}

A w twoim widoku pokazujesz takie dane

@if(Session::has("cart"))
@foreach(Session::get("cart") as $item)
{{$item["id"]}}
{{$item["name"]}}
{{$item["quantity"]}}
@endforeach
@endif