如何获取表单中的数量以及如何添加项目?现在它没有添加,实际上它取代之前的任何项目。我如何检查已经存在?并且它永远不会在输入框中获得数量
public function actionBasketAjax($id)
{ $session=new CHttpSession;
$session->open();
if(isset($_GET['qty']))
$quantity = $_GET['qty'];
else $quantity = 1;
$productInfo = Product::model()->findByPk($id);
$cartArray =Yii::app()->session['cart'];
if (Yii::app()->session['cart'] === null)
{
$session->add('cart',array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
));
}
else{
$newItem = array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
);
$cartArray = $session->add('cart', $newItem);
}
答案 0 :(得分:0)
试试这段代码: 您需要使用多维数组来保存多个产品。
$cartArray = Yii::app()->session['cart'];
if($cartArray === null) // first time
{
$session->add('cart',array( // each array is a product
array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
)
)
);
}
else
{
$found_flag = false;
foreach ($cartArray as $k => $c)
{
if($c["product_id"]==$id)// exists
{
$newItem = array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $c["quantity"]+$quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * ($c["quantity"]+$quantity))
);
$cartArray[$k] = $newItem;
$found_flag = true;
break;
}
}
if(!$found_flag)// id not found, then add as new item
{
$cartArray[] = array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
);
}
// re-assign session with new array
$session->add('cart',$cartArray);