1

例如,我有会话“globalunit”,我想使用 setState 函数设置该会话值。所以我在我的 Controller 类中创建 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 值时,结果/响应不稳定。根据我在组合单元中选择的最后一个单元,有时响应是正确的。有时响应是错误的(不会根据我在组合单元中选择的最后一个单元的值进行更改):(...
也许我太多调用 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 回答