2013-08-05 23 views
0

我有一個視圖(_form.php),其中包含字段(名稱,摘要)提交按鈕。如果我點擊提交按鈕,它應該更新一個模型的名稱字段和另一個模型的摘要字段。這兩個模型都是不同的數據庫。 任何人都可以幫忙。我想這個
以下在_form.php這個(測試)在yii中更新兩種不同數據庫的單一視圖

<?php echo $form->labelEx($model, ‘name’); ?> 
<?php echo $form->textField($model, ‘name’, array(‘size’ => 60, ‘maxlength’ => 250)); ?> 
<?php echo $form->error($model, ‘name’); ?> 
<?php echo $form->labelEx(Test1::model(), ‘summary’); ?> 
<?php echo $form->textField(Test1::model(), ‘summary’, array(‘size’ => 60, ‘maxlength’ => 250)); ?> 
<?php echo $form->error(Test1::model(), ‘summary’); ?> 
<?php echo CHtml::submitButton($model->isNewRecord ? ‘Create’ : ‘Save’); ?> 

TestController.php

public function actionCreate() { 
     $model = new Test; 
     if (isset($_POST['Test'])) { 
      $model->attributes = $_POST['Test']; 
      if ($model->save()) { 
       $modeltest1 = new Test1; 
       $modeltest1->attributes = $_POST['Test1']; 
       $modeltest1->Id = $model->Id; 
       if ($modeltest1->save()) 
        $this->redirect(array('view', 'Id' => $model->Id)); 
      } 
     } 
     $this->render('create', array(
      'model' => $model, 
     )); 
    } 

此代碼不能正常工作。我怎樣才能使它適用於不同的數據庫。我遵循下面的鏈接。

http://www.yiiframework.com/wiki/291/update-two-models-with-one-view/ 

回答

0

此代碼實際上應該可以工作,但它的不好。

我假設你完全不瞭解什麼是模型,以及它在Yii中的作用,以及如何呈現和創建表單。

我會盡力解釋它應該如何。

首先在視圖中不使用Test::model(),除非你想從它調用某個函數(但是試圖避免它)。它可以通過控制器通過它來完成:

public function actionCreate() { 
      $model_name = new Name; 
      $model_summary=new Summary; 
//something here 
      $this->render('create', array(
       'name' => $model_name, 
       'summary'=>$model_summary, 
      )); 
     } 

當你渲染你傳遞變量到視圖(name_in_view => $變量)

第二。在你看來,你可以使用你的變量。

<?php echo $form->labelEx($name, ‘name’); 
echo $form->textField($name, ‘name’, array(‘size’ => 60, ‘maxlength’ => 250)); 
echo $form->error($name, ‘name’); 
echo $form->labelEx($summary, ‘summary’); 
echo $form->textField($summary, ‘summary’, array(‘size’ => 60, ‘maxlength’ => 250)); ?> 
echo $form->error($summary, ‘summary’); ?> 
echo CHtml::submitButton($model->isNewRecord ? ‘Create’ : ‘Save’); ?> 

3rd。你需要了解什麼是模型。在這種情況下,它是擴展CActiveRecord的類。你在控制器代碼應該像盧:

public function actionCreate() { 
       $model_name = new Name; 
       $model_summary=new Summary; 
       if (isset($_POST['Name'])) 
        $model_name->attributes=$_POST['Name']; 
       if (isset($_POST['Summary'])) 
        $model_name->attributes=$_POST['Summary']; 
       if ($model_name->save()&&$model_summary->save()) 
        $this->redirect(array('view', 'Id' => $model->Id)); 
       $this->render('create', array(
        'name' => $model_name, 
        'summary'=>$model_summary, 
       )); 
      } 

$model->attributes=$_POST[]這裏是屬性的質量分配,所以他們必須在規則的安全。你總是可以用你的手指定屬性(1乘1),或者形成一個數組並將其從數組中推出。

+0

非常感謝您...我是史蒂夫新的php和Yii。 – Rudra

相關問題