При удалении товаров из корзины удаляются все кроме первого добавленного, на первом просто редиректит, даже если у меня в методе просто дамп он выводится везде но не в первом товаре.
Контроллер с добавлением отображением и удалением товаров:
<?php
namespace App\Http\Controllers;
use App\Models\Currency;
use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class CartController extends Controller
{
public function index(Request $request)
{
$currencyActive = Currency::find($request->session()->get('currencies'));
$currency = Currency::all()->count();
$cart = Session::get('cart', []);
$totalPrice = 0;
foreach ($cart as $productId => $product) {
$totalPrice += $product['price'] * $product['quantity'];
}
return view('cart.cart', compact('currency', 'cart', 'totalPrice', 'currencyActive'));
}
public function addToCart(Request $request, $productId)
{
if (!Auth::check()) {
return redirect()->route('login');
}
$cart = Session::get('cart', []);
if (array_key_exists($productId, $cart)) {
$cart[$productId]['quantity'] += $request->input('quantity');
}else {
$product = Product::find($productId);
$productInfo = [
'name' => $product->name,
'price' => $product->price,
'img' => $product->img,
'color' => $request->input('color'),
'size' => $request->input('size'),
'quantity' => $request->input('quantity'),
];
$cart[$productId] = $productInfo;
}
Session::put('cart', $cart);
Session::save();
return redirect()->route('cart.index');
}
public function remove($productId)
{
if (!Auth::check()) {
return redirect()->route('login');
}
$cart = Session::get('cart');
if (array_key_exists($productId, $cart)) {
unset($cart[$productId]);
Session::put('cart', $cart);
}
return redirect()->route('cart.index');
}
}
Роуты корзины:
Route::prefix('/cart')->group(function () {
Route::get('/', [CartController::class, 'index'])->name('cart.index');
Route::post('/add{productId}', [CartController::class, 'addToCart'])->name('add.product.toCart');
Route::delete('/remove{productId}', [CartController::class, 'remove'])->name('product.remove');
});
Форма отправления запроса на удаление:
<div class="mt-4 flex items-center sm:absolute sm:left-1/2 sm:top-0 sm:mt-0 sm:block">
<h1>Quantity: {{ $product['quantity'] }}</h1>
<form action="{{ route('product.remove', $productId) }}" method="post">
@csrf
@method('delete')
<button type="submit" class="ml-4 text-sm font-medium text-indigo-600 hover:text-indigo-500 sm:ml-0 sm:mt-3">
Remove
</button>
</form>
</div>
</div>