2013-08-05 2 views
0

필드 (이름, 요약) 제출 단추가있는보기 (_form.php)가 있습니다. 제출 버튼을 클릭하면 다른 모델의 한 모델과 요약 필드의 이름 필드가 업데이트됩니다. 두 모델 모두 다른 데이터베이스입니다. 누구든지이 문제를 해결할 수 있습니까? 나는 TestController.phpyii의 단일보기로 다른 데이터베이스의 두 모델 업데이트

에서 _form.php (테스트)

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

에서이 코드가 작동하지 않는

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 => $ 변수)

2 위를 변수를 전달하는 렌더링 할 때. 보기에서 변수를 사용할 수 있습니다.

<?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 by 1) 배열을 만들고 배열에서 밀어 넣을 수 있습니다.

+0

고맙습니다 ... 대단히. 나는 PHP와 Yii에 익숙하지 않습니다. – Rudra

관련 문제