1

ユーザーが特定のページにアクセスするたびに、配列であるセッション変数に値を追加する関数を実行しようとしています。これがコントローラーからの私のコードです:

public function actionPut($id)
    {
        $session=new CHttpSession;
        $session->open();
        if (empty($session['the_variable'])) {
            $session['the_variable'] = array($id);
        }
        else {
            $session['the_variable'][] = $id;
        }
        $session->close();
        $this->render('test', array('session'=>$session));
    }

しかし、それは機能しません。変数が空の場合、初めて情報を保存するだけです。次にページにアクセスしても、配列に値が追加されません。私もpush_array機能を試しましたが、運がありません。なにが問題ですか?

4

2 に答える 2

6

このソリューションを試してください。

public function actionPut($id)
{

     $session = Yii::app()->session;
     if (!isset($session['the_variable']) || count($session['the_variable'])==0) 
     {
         $session['the_variable'] = array($id);
     }
     else {
        $myarr = $session['the_variable'];
        $myarr[] = $id;
        $session['the_variable'] = $myarr;
     }
     $this->render('test', array('session'=>$session));
}
于 2012-07-06T05:35:17.247 に答える
0

あなたの問題は、あなたが自分でセッションを開始/終了していることだと思います。代わりに、Yiiにそれを処理させる必要があります。

    public function actionPut($id)
    {
        $session=Yii::app()->session;
        
        if (empty($session['the_variable'])) {
            $session['the_variable'] = array($id);
        }
        else {
            $session['the_variable'][] = $id;
        }
        
        $this->render('test', array('session'=>$session));
    }

また、自分でセッションを閉じないでください。ただし、Yiiにもそれを処理させてください。

于 2012-07-06T04:33:18.973 に答える