2014-02-13 86 views
0

我是Yii framework,因此我需要一些幫助從哪裏開始。編輯個人資料頁面3張桌子 - Yii框架

我需要的是,action and module顯示錶單的用戶,這對他將能夠編輯是自己的空間(有資料圖片),所以我有3個表

user_account || user_personal || user_general 

如何建立一次插入並更新這3個表格的表單?

我試試這個:

這是我做的,但它仍然沒有將數據保存連成一張桌子。

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; 
    } 


} 

回答

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 
     )); 

這裏所有三個模型都通過render來創建頁面。

形式頁面,您可以使用每個模型的屬性作爲字段

像這樣

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(); 
}