Kezdőoldal » Számítástechnika » Weblapkészítés » Az alábbi Laravel Session...

Az alábbi Laravel Session arrayben hogyan tudom a "quantity"-t updatelni?

Figyelt kérdés

Dióhéjban:


Egy 2 dimenziós array egyik indexe alatt lévő "quantity"-t kellene updatelni. Van egy html form amiben van egy + gomb és ha rákattint a felhasználó akkor a quantity-t növeli 1-el. Arra tippelek, hogy egy loop-al végig kellene menni az arrayen, de nem tudom megcsinálni.


Alap array, mielőtt növelnénk:


array:2 [▼

0 => array:7 [▼

"id" => 6

"brand" => "Huawei"

"type" => "P30"

"color" => "Black"

"weight" => 200

"screen_size" => 6.25

"quantity" => 1

]

1 => array:7 [▼

"id" => 46

"brand" => "Huawei"

"type" => "P 20"

"color" => "Black"

"weight" => 202

"screen_size" => 6.19

"quantity" => 1

]

]



Ezzel a functionnal próbálkoztam hiába:


public function quantityAdd(Request $request) {


// array index. 0,1 stb.

$index = $request->key;


// jelenlegi mennyiség

$quantity = Session::get('cart')[$index]['quantity'];


// növelés 1-el

$add = $quantity+1;


$cart = Session::get('cart');


// ez lenne az update...

session()->put('cart.quantity', $cart);


$item = Session::get('cart');


dd($item);


return redirect()->back();

}



Ezt az eredményt kapom:


array:3 [▼

0 => array:7 [▼

"id" => 6

"brand" => "Huawei"

"type" => "P30"

"color" => "Black"

"weight" => 200

"screen_size" => 6.25

"quantity" => 1

]

1 => array:7 [▼

"id" => 46

"brand" => "Huawei"

"type" => "P 20"

"color" => "Black"

"weight" => 202

"screen_size" => 6.19

"quantity" => 1

]

"quantity" => array:2 [▼

0 => array:7 [▼

"id" => 6

"brand" => "Huawei"

"type" => "P30"

"color" => "Black"

"weight" => 200

"screen_size" => 6.25

"quantity" => 1

]

1 => array:7 [▶]

]

]



Tudom, hogy van erre kész modul vagy nem tudom minek nevezik, de sajátot akarok csinálni.



2021. jan. 12. 20:52
 1/7 A kérdező kommentje:

// ez lenne az update...


session()->put('cart.quantity', $add);


Ezt véletlen írtam át.


array:3 [▼

0 => array:7 [▶]

1 => array:7 [▶]

"quantity" => 2

]


Szóval ez az eredmény. Ami nem jó. Mert nekem az 0-as index alatti elem quantity-jét kell, hogy átírja. Vagy az 1-es elemét. Attól függ melyikre kattintok.

2021. jan. 12. 20:57
 2/7 anonim ***** válasza:
0%
Norbi Update-el.
2021. jan. 12. 21:08
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

Hasznald a dokumentaciot, Laravele szerintem az egyik legjobb.

[link]


session()->put('cart.quantity', $add);


ezzel csak hozzaadsz egy elemet a car arrayhez


neked cart.'.$index.'.quantity kell

2021. jan. 13. 08:38
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:

<form method="post" action="{{ route('cart.quantityAdd') }}">

@csrf

<input type="hidden" name="key" value="{{ $key }}">

<button>+</button>

</form>



public function quantityAdd(Request $request) {


// array index

$index = $request->key;


// item data in the cart

$id = Session::get('cart')[$index]['id'];

$brand = Session::get('cart')[$index]['brand'];

$type = Session::get('cart')[$index]['type'];

$color = Session::get('cart')[$index]['color'];

$weight = Session::get('cart')[$index]['weight'];

$screen_size = Session::get('cart')[$index]['screen_size'];

$quantity = Session::get('cart')[$index]['quantity'];


$item = [

'id' => $id,

'brand' => $brand,

'type' => $type,

'color' => $color,

'weight' => $weight,

'screen_size' => $screen_size,

'quantity' => $quantity+1

];


session()->put('cart.'.$index, $item);


return redirect()->back();

}



Végül így csináltam meg. Az adott index alatt frissítem az összes adatot.


Eredmény:


array:2 [▼

1 => array:7 [▼

"id" => 46

"brand" => "Huawei"

"type" => "P 20"

"color" => "Black"

"weight" => 202

"screen_size" => 6.19

"quantity" => 2

]

2 => array:7 [▼

"id" => 6

"brand" => "Huawei"

"type" => "P30"

"color" => "Black"

"weight" => 200

"screen_size" => 6.25

"quantity" => 1

]

]


Biztos, hogy nem a legjobb megoldás, de működik, szóval örülök.

2021. jan. 13. 19:44
 5/7 anonim ***** válasza:
Ez így kevés, fejtsd ki bővebben!
2021. jan. 13. 20:49
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

if ($request->session()->has('cart')) {


$key = $request->key;


$cart = session('cart');


$cart[$key]['quantity'] = $cart[$key]['quantity'] + 1;


$request->session()->put('cart', $cart);

}

2021. jan. 14. 08:22
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:
A formot nem ertem, illetve a koncepcioval is vannak gondok
2021. jan. 14. 08:29
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!