удалить продукт из сеанса корзины с помощью product_id в laravel - PullRequest
2 голосов
/ 23 декабря 2019

Как мне удалить товар из сеанса корзины покупок по product_id? Я отправил идентификатор продукта на контроллер с помощью Ajax. Это мои коды, и это структура моей сессии корзины покупок

json структура сессии:

[{"product_id":"2","quantity":5,"userId":"1","product_name":"\u062f\u0645\u067e\u0627\u06cc\u06cc \u0627\u0628\u0631\u06cc ","product_root":"files\\courses\\course2","product_description":"\u062f\u0645\u067e\u0627\u06cc\u06cc \u0627\u0628\u0631\u06cc ","product_price":5000},{"product_id":"1","quantity":1,"userId":"1","product_name":"\u062a\u0645\u0628\u0648\u0646 \u06cc\u0632\u062f\u06cc\u0645 \u0645\u0627\u0644 \u062a\u0648 ","product_root":"files\\courses\\course1","product_description":"asdasdasdasdsadsadsadas","product_price":1000}]

функция контроллера:

public function deleteCardItem(Request $request)
{
    $product_id = $request-> id;
    $cards = session()->get('cards');
    $ids = array_column($cards, 'product_id');
    $index = array_search($product_id, $ids);
    unset($cards[$index]);
}

ajax:

$.ajax({
      type: 'post',
      url: '{{route('deleteCard')}}',
      data: {
          'id':Product_id,
          'userId':'{{auth()->user()->id}}',
          "_token": '{{ csrf_token() }}',
      },
      cache: false,
      success: function(res){
      }
});

1 Ответ

1 голос
/ 23 декабря 2019

Вы можете использовать array_filter, чтобы найти и удалить удаленный элемент:

public function deleteCardItem(Request $request)
{
    $product_id = $request-> id;
    $cards = session()->get('cards');
    $newCards = array_filter($cards, function($product){
         return $product['product_id'] != $product_id;
    });
    session($newCards);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...