例如,我有会话“ globalunit”,我想使用setState函数设置该会话值。所以我在Controller类中使actionSetUnit和actionGetUnit函数由ajax在View类中调用

 //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值时,结果/响应不稳定。有时响应是正确的,这是我在组合单位中选择的最后一个单位。有时响应是错误的(不会根据我以组合单位选择的最后一个单位的值更改):(...
也许我太多调用setState函数来设置具有相同名称的值会话。
我的代码中缺少任何内容吗?

最佳答案

确保仅在填充$ _POST时设置状态

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


我想您有时会用空值覆盖它。尝试对您的$ _POST值进行Yii :: trace()或Yii :: log(),以确保每次调用都可以填充该值。

10-08 17:43