会话值以yii格式保存到数据库中

时间:2014-04-29 03:23:37

标签: php yii parameter-passing session-variables

在我回显会话值的表单中,它不会出现错误,但是当我尝试将其保存在模型中的数据库时,不会保存该值。

以下是我的观点: (我刚刚发布了我认为需要的内容。)

 <?php
 $userid = Yii::app()->session['iduser'];
 echo $userid;
 ?>

这是我的控制器: contentid,title和content保存在数据库中,只有userid是我的问题。在我的数据库中,我将userid设置为int(11)not null

public function actionContent(){

$model=new ContentForm;

    if(isset($_POST['ContentForm'])) {
        $model->attributes=$_POST['ContentForm'];
        if($model->save())
        $this->redirect(array('content','contentid'=>$model->contentid));
        $this->redirect(array('content','title'=>$model->title));
        $this->redirect(array('content','content'=>$model->content));
        $this->redirect(array('content','userid'=>$model->userid));
        }

    $this->render('content',array('model'=>$model));        
}

这是我的模特:

 <?php

  class ContentForm extends CActiveRecord{

public $content;
public $title;
public $userid;

public function tableName(){
     return 'tbl_content';
}

public function attributeLabels(){
    return array(
        'contentid' => 'contentid',
        'content' => 'content',
        'title' => 'title',
        'userid' => 'userid',
    );
}

public function rules(){
    return array(
       array('content, title, userid', 'safe'),
    );
  }
}

1 个答案:

答案 0 :(得分:2)

您的用户ID存储在会话中,它可以在MVC中的任何位置访问 在您的控制器上试试这个

public function actionContent(){

$model=new ContentForm;

    if(isset($_POST['ContentForm'])) {
        $model->attributes=$_POST['ContentForm'];//The post values
        $model->userid=Yii::app()->session['iduser'];
        if($model->save())
        $this->redirect(array('content','contentid'=>$model->contentid));
        //$this->redirect(array('content','title'=>$model->title));
        //$this->redirect(array('content','content'=>$model->content));  //Why this to many redirects here the first redirect only works here
        //$this->redirect(array('content','userid'=>$model->userid));
        }

    $this->render('content',array('model'=>$model));        
}