2013-12-16 70 views
1

我想在会话中存储一些数据作为数组,但该函数似乎并没有工作。它不会抛出任何错误,但每次向它添加数据时,它都会覆盖前一个数据。我正在使用yii,这里是行动在会话中存储数组

public function actionStoreProducts($name) 
     { 
      $name=trim(strip_tags($name)); 
      if(!empty($name)) 
      { 
       if(!isset(Yii::app()->session['_products'])) 
       { 
        Yii::app()->session['_products']=array($name); 
        echo 'added'; 
      } 
      else 
      { 

       $myProducts = Yii::app()->session['_products']; 
       $myProducts[] = $name; 
       Yii::app()->session['products'] = $myProducts; 
       echo 'added'; 

      } 

     } 

任何人都可以建议我如何达到预期的效果?

回答

2

会话属性只读 我认为正确的形式给出的是:

function actionStoreProducts($name) { 
    $session = new CHttpSession;    //add this line 
    $session->open();       //add this line 
    $name = trim(strip_tags($name)); 
    if (!empty($name)) { 
     if (!isset(Yii::app()->session['_products'])) { 
      $session->add('_products', array($name)); //replace this line 
      echo 'added'; 
     } else { 

      $myProducts = Yii::app()->session['_products']; 
      $myProducts[] = $name; 
      $session->add('_products', $myProducts); //replace this line 
      echo 'added'; 
     } 
    } 
} 
+0

感谢您answer.Its工作正常,但有一个小错误我这个code.an我已经修改它 –

+0

什么错误?告诉我修改它,谢谢 –

+0

** $ session-> add('products',$ myProducts); **这里添加('** _ products **',$ myProducts) –

3

请更正你的代码是这样的。

public function actionStoreProducts($name) { 
     $name = trim(strip_tags($name)); 
     if (!empty($name)) { 
      if (!isset(Yii::app()->session['_products'])) { 
       Yii::app()->session['_products'] = array($name); 
       echo 'added'; 
      } else { 

       $myProducts = Yii::app()->session['_products']; 
       $myProducts[] = $name; 
       Yii::app()->session['_products'] = $myProducts; 
       echo print_r(Yii::app()->session['_products']); 
       echo 'added'; 
      } 
     } 
    } 
2

首先得到一个变量到$会议[“someValue中”],然后在数组变量肿痛,使用像IT: -

$session = new CHttpSession; 
    $session->open(); 

    $myval = $session['somevalue']; 
    $myval[] = $_POST['level']; 
    $session['somevalue'] = $myval;