[英]php session issue in remove value from Cart Sessin Array
我正在使用Yii Framework,無法從會話中刪除值。 當我使用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的產品
嘗試這個:
$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
。
發生的是所討論的類正在使用重載為您提供價值
$session = Yii::app()->session;
如果您查看類本身,則應該有一個__get
函數,並且$session
可能是private
或protected
。 當您訪問$session
變量時,它將返回一個copy 。 這就是為什么它告訴您未unset
沒有任何效果的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.