【问题标题】:Set session in Yii framework在 Yii 框架中设置会话
【发布时间】:2012-12-21 06:31:04
【问题描述】:

我正在用 Yii 开发一个网站。

我在页面中有一个按钮。我需要在用户单击它时设置一个会话变量,并在用户单击另一个按钮时获取会话值。

我该怎么做?

【问题讨论】:

    标签: session yii


    【解决方案1】:

    使用CWebUser状态方法

    //set session variable
    Yii::app()->user->setState("state_name", "value");
    
    //check session variables
    Yii::app()->user->hasState("state_name");
    
    //get session variable
    Yii::app()->user->getState("state_name");
    
    //delete session variable (thanks @Kailas)
    Yii::app()->user->setState("state_name", null);
    

    【讨论】:

    • 通过设置删除状态 //delete state Yii::app()->user->setState('stat_name',null);
    【解决方案2】:

    您可以使用 CWebUser 的setState

    Yii::app()->user->setState('key', 'value');
    

    【讨论】:

    • 我不能在视图文件中使用它,可以吗?我想我必须在视图文件中使用 ajax 向控制器发送设置会话请求,是真的吗?
    • 你说的和 Yii::app()->session 有什么区别?
    • 您可以在视图文件中使用它。 Yii::app()->会话是只读的
    • 谢谢 w43L,但我用 Yii::app()->session('test') = 'something' 设置会话;
    【解决方案3】:

    简单

    Yii::app()->session['var'] = $encrypted_txt;

    【讨论】:

      【解决方案4】:
      $session = Yii::$app->session;
      

      // 获取会话变量。以下用法是等价的:

      $language = $session->get('language');
      

      // 设置会话变量。以下用法是等价的:

      $session->set('language', 'en-US');
      

      // 删除会话变量。以下用法是等价的:

      $session->remove('language');
      

      // 检查会话变量是否存在。以下用法是等价的:

      if ($session->has('language'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 1970-01-01
        • 2015-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多