如何检查 YII 会话变量中是否存在该值
How to check that value exist in YII Session Variable
我正在使用 yii 并创建一个购物车,通过使用产品的 id 我需要检查 id 是否已经存在,但是我使用 in_array 和 array_key_exists 但无法在这里解决它是我的控制器代码
public function actionCartupdateajax() {
//start yii session
$session = Yii::app()->session;
// get posted values
$id = isset($_POST['id']) ? $_POST['id'] : "";
$name = isset($_POST['name']) ? $_POST['name'] : "";
$price = isset($_POST['price']) ? $_POST['price'] : "";
$imgSrc = Yii::app()->request->baseUrl . '/images/icondeletecart.png';
/*
* check if the 'cart' session array was created
* if it is NOT, create the 'cart' session array
*/
if (!isset($session['cart_items']) || count($session['cart_items']) == 0) {
Yii::app()->session['cart_items'] = array();
}
/*
* Here is the proble
* check if the item is in the array, if it is, do not add
*/
if (in_array($id, Yii::app()->session['cart_items'])) {
echo 'alreadyadded';
} else {
Yii::app()->session['cart_items'] = $id;
echo '<li><strong>' . $name . '</strong><span>' . $price . '</span>'
. '<img src=' . $imgSrc . ' alt="No Image" class="imagedeletecart" id=' . $id . '></li>';
}
}
并且控制台中的错误是
in_array() 期望参数 2 为数组,字符串给定
我认为下一行有问题:
Yii::app()->session['cart_items'] = $id;
在此代码之后 cart_items 将不是数组,而是整数或字符串。
清除会话并尝试更改:
Yii::app()->session['cart_items'][] = $id;
最好使用 CHtml 生成 html。它更清洁。像这样:
echo CHtml::tag('li', array(/*attrs*/), 'content_here');
//your code
echo '<li><strong>' . $name . '</strong><span>' . $price . '</span>'
. '<img src=' . $imgSrc . ' alt="No Image" class="imagedeletecart" id=' . $id . '></li>';
//I propose this way(but you can use your version):
echo CHtml::tag(
'li',
array(),
CHtml::tag(
'strong',
array(),
'name'
) . CHtml::tag(
'span',
array(),
'price'
) . CHtml::image(
'src',
'alt',
array(
'class' => 'imagedeletecart',
'id' => 'id'
)
)
);
我正在使用 yii 并创建一个购物车,通过使用产品的 id 我需要检查 id 是否已经存在,但是我使用 in_array 和 array_key_exists 但无法在这里解决它是我的控制器代码
public function actionCartupdateajax() {
//start yii session
$session = Yii::app()->session;
// get posted values
$id = isset($_POST['id']) ? $_POST['id'] : "";
$name = isset($_POST['name']) ? $_POST['name'] : "";
$price = isset($_POST['price']) ? $_POST['price'] : "";
$imgSrc = Yii::app()->request->baseUrl . '/images/icondeletecart.png';
/*
* check if the 'cart' session array was created
* if it is NOT, create the 'cart' session array
*/
if (!isset($session['cart_items']) || count($session['cart_items']) == 0) {
Yii::app()->session['cart_items'] = array();
}
/*
* Here is the proble
* check if the item is in the array, if it is, do not add
*/
if (in_array($id, Yii::app()->session['cart_items'])) {
echo 'alreadyadded';
} else {
Yii::app()->session['cart_items'] = $id;
echo '<li><strong>' . $name . '</strong><span>' . $price . '</span>'
. '<img src=' . $imgSrc . ' alt="No Image" class="imagedeletecart" id=' . $id . '></li>';
}
}
并且控制台中的错误是
in_array() 期望参数 2 为数组,字符串给定
我认为下一行有问题:
Yii::app()->session['cart_items'] = $id;
在此代码之后 cart_items 将不是数组,而是整数或字符串。 清除会话并尝试更改:
Yii::app()->session['cart_items'][] = $id;
最好使用 CHtml 生成 html。它更清洁。像这样:
echo CHtml::tag('li', array(/*attrs*/), 'content_here');
//your code
echo '<li><strong>' . $name . '</strong><span>' . $price . '</span>'
. '<img src=' . $imgSrc . ' alt="No Image" class="imagedeletecart" id=' . $id . '></li>';
//I propose this way(but you can use your version):
echo CHtml::tag(
'li',
array(),
CHtml::tag(
'strong',
array(),
'name'
) . CHtml::tag(
'span',
array(),
'price'
) . CHtml::image(
'src',
'alt',
array(
'class' => 'imagedeletecart',
'id' => 'id'
)
)
);