当前位置: 首页 > 知识库问答 >
问题:

从会话中删除项目

杜砚
2023-03-14

我的购物车有两个功能,第一个是退货总价和商品总数量:

public function GetCartTotal(Request $request)
{
    if (!Session::has('cart')) {
        return Response::json([null]);
    }
    $oldCart = Session::get('cart');
    $cart = new Cart($oldCart);
    return Response::json([
        'totalPrice' => $cart->totalPrice, 
        'totalQty' => $cart->totalQty]
    );
}

public function GetCartItems()
{
    if (!Session::has('cart')) {
        return Response::json(['items' => null]);
    }
    $oldCart = Session::get('cart');
    $cart = new Cart($oldCart);
    return Response::json(['items' => $cart->items]);
}

这两个函数返回这两个参数:

{
    totalPrice: 320750000,
    totalQty: 9
}

和:

{  
   items:{  
      1:{  
         id:1,
         qty:5,
         price:750000,
         item:{  
            id:1,
            name:"Product title 1",
            desc:null,
            price:"150000",
            barcode:"1556717299",
            Image:"1556717299.jpg",
            count:"25",
            created_at:"2019-05-01 17:58:19",
            updated_at:"2019-05-01 17:58:19"
         }
      },
      2:{  
         id:2,
         qty:4,
         price:320000000,
         item:{  
            id:2,
            name:"Product title 2",
            desc:null,
            price:"80000000",
            barcode:"1556729461",
            Image:"1556729461.jpg",
            count:"52",
            created_at:"2019-05-01 21:21:01",
            updated_at:"2019-05-01 21:21:01"
         }
      }
   }
}

我可以通过此功能销毁所有购物车会话:

php prettyprint-override">public function RemoveAllCartItems(){
    Session::forget('cart');
}

如何删除特定购物车项目?我在使用这个方法,它的工作。但它不会改变总价和总数量:

public function RemoveCartItem(Request $request, $id){
    $cart = Session::get('cart');
    unset($cart->items[$id]);
}

共有1个答案

计泉
2023-03-14

您可以通过拉动来实现这一点-

$cart = Session::pull('cart'); // Retrieve and delete an item
unset($cart->items[$id]);
// Add any additional logic that updates $cart (eg: updating qty and total price)
Session::put('cart', $cart);
 类似资料:
  • 问题内容: 我正在使用Django和Redis作为会话引擎(也是Celery,但这是其他东西)。它运行完美,我可以看到速度有所提高。 我有一个脚本,每分钟运行一次,以通过某些方法检查活动用户,如果该用户在最近一分钟内未处于活动状态,则该会话将被删除。这样做是为了满足客户的跟踪需求。 在我切换到Redis作为会话引擎之前,该脚本运行良好。实际上,该会话确实已从数据库中删除,但未从Redis中删除。我

  • 当我更改ListViewAdapter时,我的项目将无法从ListView中清除,并且我有一些空白条目。 她是我的密码:

  • 在web.xml中,my的被设置为120(即2小时)。Hazelcast地图名为SessionMap,其TTL为24小时。这里的想法是,我们希望结束2小时不活动的会话,但如果有人持续使用应用程序,我们希望让会话继续最多24小时。 问题是,如果我让一个会话处于空闲状态,Tomcat将在2小时后终止会话,但会话仍将保留在Hazelcast映射(SessionMap)中,直到TTL。当会话在Tomcat

  • 我在基于WooCommerce的网站上工作。我在里面有很多产品,所有产品都被分配到不同的产品类别。 现在,我有一个要求,完全删除一个类别的产品,如“woo猫”。 有许多自定义插件和主题,在其中有条件地使用该类别的id/slg,所以我决定不删除类别,该类别的产品或该类别的相关代码。 但我重定向每一个可能出现的URL到商店页面中的类别是包括 像我重定向-单页的产品,类别列表页,也隐藏从现场搜索等。。。

  • 我有一个假设,它有8个项目A-H,现在我想从中删除存储在int数组中的1,3,5位置项目。我该怎么做。 我正试着和你一起做这件事 但在数组的第一个被删除的项被更改之后,在下一次迭代中它删除了错误的元素或给出异常。

  • 我有一些cdibean。以前,它们都是JSF管理的bean(从JSF管理的bean更改为CDI管理的bean)。 我像下面这样做是为了删除用户成功下在线订单后管理的一些会话范围的JSF。 以便在订单处理完成后将所有内容设置为默认值。这与在订单处理成功终止后不能注销用户的整个HTTP会话的销毁/无效无关。 与JSF托管bean不同,CDIBean通过一些CDI管理器实现(如Weld)存储到服务器内存