【问题标题】:php session issue in remove value from Cart Sessin Array从购物车会话数组中删除值中的 php 会话问题
【发布时间】:2015-08-12 12:54:24
【问题描述】:

我正在使用 Yii 框架,无法从会话中删除值。当我使用 ajax 调用函数时,我在控制台中收到此错误

间接修改CHttpSession的重载元素无效

任何建议都会有所帮助,谢谢。下面是我的代码

public function actiondeleteproductajax() {
    $session = Yii::app()->session;
    $id = isset($_POST['id']) ? $_POST['id'] : "";
    $key = array_search($id, $session['cart_items']);
    if ($key !== false) {
        unset($session['cart_items'][$key]);
        echo 'success';
    }
}

我想删除数组的索引,因为值包含多次添加的相似产品 ID

【问题讨论】:

    标签: php arrays session yii


    【解决方案1】:

    试试这个:

    $cartItems = Yii::app()->session['cart_items'];
    $id = isset($_POST['id']) ? $_POST['id'] : "";
    $key = array_search($id, $cartItems);
    if ($key !== false) {
        unset($cartItems[$key]);
        echo 'success';
    }
    Yii::app()->session['cart_items'] = $cartItems;
    

    您不能直接修改 session 项目,它由 yii 内部使用 getter 和 setter 处理,因此 unset() 将无效,因此会出现警告。 但是,您可以取消设置副本 $cartItems 中的项目并将剩余的数组分配回 session object

    【讨论】:

      【解决方案2】:

      发生的事情是,有问题的类正在使用overloading 为您提供价值

      $session = Yii::app()->session;
      

      如果你查看类本身,应该有一个__get 函数,$session 可能是privateprotected。当您访问$session 变量时,它会返回一个副本。这就是为什么它告诉您您的 unset 没有任何效果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-16
        • 2011-08-18
        相关资源
        最近更新 更多