编辑包含3个表的配置文件页面 - Yii框架

时间:2014-02-13 05:36:19

标签: yii-extensions yii yii-components

我是Yii framework的新人,所以我需要一些帮助从哪里开始。

我需要的是,action and module向用户显示一个表单,他可以编辑的是自己的个人资料(带个人资料图片),所以我有3个表

user_account || user_personal || user_general

如何构建一个可以一次插入和更新这3个表的表单?

我试试这个:

这就是我所做的,但它仍然没有将数据保存到1个表中。

 public function actionUpdate() {
        $model = new ProfileUpdate();
        if(isset($_POST['ProfileUpdate']))
              {
              $model->attributes = $_POST['ProfileUpdate'];
                if($model->validate())
                {
                  $account = new Profile();
                  $account->userid = Yii::app()->user->id;
                  $account->name = $model->name;
                  $account->website = $model->website;
                  $account->category = $model->category;
                  $account->save();

                $this->redirect('profile');
                }

                }

模型:

    class Profile extends CActiveRecord
{

    public $userid; 
    public $name;   
    public $website; 
    public $category;

  public static function model()
  {
    return parent::model(__CLASS__);
  }

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

  public function primaryKey()
  {
    return 'id';
  }

  public static function userExists($user)
  {
    return self::model()->countByAttributes( array('username'=>$user) ) > 0;
  }


}

1 个答案:

答案 0 :(得分:0)

您可以在一个功能中使用所有三个模型

例如:

在创建功能

$model_account = new user_account;
$model_personal= new user_personal;
$model_general = new user_general;

$this->render('create',array(
            'model_account'=>$model_account, 'model_personal' => $model_personal, 'model_general' => $model_general
        ));

这里所有三个模型都通过渲染来创建页面。

在表单页面中,您可以将每个模型属性用作字段

喜欢这个

echo $form->textField($model_account,'account_name'); 
echo $form->textField($model_personal,'email');
echo $form->textField($model_general,'address'); 

在创建功能/更新功能

$model_account->attributes = $_POST['user_account'];
$model_personal->attributes = $_POST['user_personal'];
$model_general->attributes = $_POST['user_general'];
if($model_account->validate() && $model_personal->validate() && $model_general->validate())
                {
                  $model_account->save();
                  $model_personal->save();
                  $model_general->save(); 
}