【问题标题】:Yii storing form data in a session does not seem to be workingYii 在会话中存储表单数据似乎不起作用
【发布时间】:2013-12-04 05:52:52
【问题描述】:

我希望能够将表单数据存储在会话中以在其他页面上使用,但似乎无法正常工作:

//the action controller for the form
$clientInfo = new ClientInfo;
if(isset($_POST['ClientInfo'])) {
    // collects user input data
    $clientInfo->attributes=$_POST['ClientInfo'];
    // validates user input and redirect to previous page if validated
    if($clientInfo->validate()) {
        //store client info in a session varible
        Yii::app()->session['fname'] = $clientInfo->fname;
        Yii::app()->session['lname'] = $clientInfo->lname;
        Yii::app()->session['email'] = $clientInfo->email;
        Yii::app()->session['cellPhone'] = $clientInfo->cellPhone;
        $this->redirect('service'); 
    } 
}

然后,在一个视图中,我这样做了,但我什么也没得到:

<div class="panel panel-success">
    <div class="panel-heading">
        <h3 class="panel-title">Overview</h3>
    </div>
    <div class="panel-body">
    <?php 
        echo Yii::app()->session['fname'];
        echo Yii::app()->session['lname'];
    ?>
    </div>
</div>

【问题讨论】:

    标签: php session yii


    【解决方案1】:
    $loggeduser = array();
    
    $loggeduser['fname']=$clientInfo->fname;
    $loggeduser['lname']=$clientInfo->lname;
    $loggeduser['email']=$clientInfo->email;
    $loggeduser['cellPhone']=$clientInfo->cellPhone;
    
    Yii::app()->session['loggeduser'] = $loggeduser;
    

     <?php 
                echo Yii::app()->session['loggeduser']['fname'];
                echo Yii::app()->session['loggeduser']['lname'];
        ?>
    

    【讨论】:

    • 我想到了必须将其放入数组中的概念,但这也不起作用
    • 这不起作用,因为您没有直接访问会话的权限
    • @IonutFlaviusPogacian 为我工作。我正在存储一些这样的用户数据。
    【解决方案2】:

    我想通了。我必须使用这个

    Yii::app()->session['fname'] = $_POST['ClientInfo']['fname'];
    

    不是这个

    Yii::app()->session['fname'] = $clientInfo->fname;
    

    【讨论】:

      【解决方案3】:

      或者这样做:

      Yii::app()->session['client_info'] = $clientInfo->attributes;
      

      您将把整个模型属性存储为一个数组

      您将使用以下值:

      Yii::app()->session['client_info']['fname']
      

      【讨论】:

        【解决方案4】:

        尝试以这种方式存储数据。

        $session=new CHttpSession;
        
        $session->open();
        
        $session['fname']=$clientInfo->fname;
        $session['lname']=$clientInfo->lname;
        $session['email']=$clientInfo->email;
        $session['cellPhone']=$clientInfo->cellPhone;
        

        检索值。

        $session = new CHttpSession;
        
        $session->open();
        
        $fname = $session['fname'];
        $lname = $session['lname'];
        $email = $session['email'];
        $cellPhone = $session['cellPhone'];
        

        谢谢

        【讨论】:

        • 这也不起作用。一定是某种配置问题,因为根据文档,我使用的解决方案应该可以正常工作
        • 在 google 中搜索“larry ullman using-sessions-with-the-yii-framework”并访问第一个链接,浏览该页面可能会帮助您准确理解和解决问题。谢谢
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-04
        • 1970-01-01
        • 2013-01-31
        • 1970-01-01
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多