1

たとえば、セッション「globalunit」があり、そのセッション値を setState 関数を使用して設定したいとします。だから私はコントローラークラスでactionSetUnitとactionGetUnit関数を作成し、Viewクラスでajaxによって呼び出されるようにします

 //to set globalunit
 public function actionSetUnit(){
   if (isset($_POST['unit']) && $_POST['unit'] !== null){
         Yii::app()->user->setState('globalunit',$_POST['unit']);
         echo 'globalunit value now is :'.Yii::app()->user->getState('globalunit');
    }
 }

 //to get globalunit
 public function actionGetUnit(){
    echo 'globalunit value now is :'.Yii::app()->user->getState('globalunit');
 }

ビューでコンボユニットを変更/クリックすると、ビューで actionSetUnit を呼び出すことがよくあります。しかし、ビューで getUnit 関数を呼び出して globalunit 値を表示すると、結果/応答が不安定になります。コンボユニットで最後に選択したユニットに応じて、応答が真になることがあります。時々、responsがfalseです(コンボユニットで選択した最後のユニットの値に応じて変更されません):(...
おそらく、setState関数を呼び出して、同じ名前の値セッションを設定しすぎます。
コードに欠落がありますか??

4

1 に答える 1

1

$_POST が満たされたときにのみ状態を設定するようにしてください

 //to set globalunit
 public function actionSetUnit(){
    if (isset($_POST['unit']) && $_POST['unit'] !== null)
        Yii::app()->user->setState('globalunit',$_POST['unit']);
 }

空の値で時々上書きしていると思います。Yii::trace() または Yii::log() を試して、 $_POST 値がすべての呼び出しで満たされるようにしてください。

于 2012-11-30T07:43:10.870 に答える