Я новичок в Laravel 5 и пытаюсь создать веб-приложение для электронной коммерции, изучая сам.Удалить элемент из массива сеансов в laravel 5
У меня есть следующий набор продуктов:
array:2 [▼
0 => array:4 [▼
"productId" => 3
"quantity" => 2
"productName" => "Testing Product 3"
"productRate" => 275.0
]
1 => array:4 [▼
"productId" => 2
"quantity" => 2
"productName" => "Testing Product 2"
"productRate" => 180.0
]
]
Теперь, когда пользователь нажимает на x
ссылку, которая с точки зрения шаблона корзину, он делает удалить продукт из сеанса, но это также удаляет полный массив корзины сеанса при повторной загрузке следующей страницы.
Вот контроллер для удаления продукта:
public function destroy($id) {
if (\Session::has('cart') && is_array(\Session::get('cart'))) {
$cart = \Session::get('cart');
for ($i=0; $i < count($cart); $i++) {
foreach ($cart[$i] as $key => $value) {
if ($key === 'product' && $value == $id) {
unset($cart[$i]);
}
}
}
return redirect('/cart')->with('cart', $cart);
}
}
Я также попытался так:
unset($cart[$i][$key])
Но это дало мне ошибку undefined index
.
Просьба направлять меня, где я совершил ошибку, и каково ее решение.
UPDATE 1:
Вот функция индекс:
public function index() {
$cart = \Session::get('cart');
return view('cart.index')->with('cart', $cart);
}
UPDATE 2: Согласно discussion, Вот уничтожить функции:
public function destroy($id) {
if (\Session::has('cart') && is_array(\Session::get('cart'))) {
$cart = \Session::get('cart');
foreach ($cart as $index => $product) {
if ($product['productId'] == $id) {
unset($cart[$index]);
}
}
session(['cart' => $cart]);
return redirect('/cart');
}
}
Какое значение '$ id'? Это 'productId' или' Array Index'? – mininoz
это 'productId' –