проверить обе модели в единой форме в Yii - PullRequest
0 голосов
/ 25 января 2012

У меня есть две базы данных, первая для группы, а вторая для участника.Теперь я хочу проверить обе модели в одной форме, и файл моего группового контроллера выглядит так:

public function actionCreate()
  {
    $model=new Group;
    $member=new Member;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Group'],$_POST['Member']))
    {
      $model->attributes=$_POST['Group'];
      //$member->attributes=$_POST['Member'];
      if($model->save())
      {
        $member->attributes=$_POST['Member'];
        $member->group_id = $model->id;
        if($member->save())
        {
          $this->redirect(array('view','id'=>$model->id));
        }
      }
        $this->redirect(array('view','id'=>$model->id));
    }

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

Итак, как выполнить проверку обеих моделей здесь.

Ответы [ 3 ]

0 голосов
/ 25 января 2012

Вы можете создать класс, который расширяет CFormModel.Это делает код вашего контроллера простым и чистым.Убедитесь, что он может быть создан с помощью конструктора по умолчанию.Затем вы передаете данные для группы и пользователя, проверяете их, а затем сохраняете их следующим образом:

public function actionCreate() {
    $form = new CreateGroupForm();

    if (isset($_POST['Group'],$_POST['Member'])) {
        $form->setData($_POST['Group'], $_POST['Member']);
        if ($form->validate()) {
            $form->save();
        }
    }
    ...
}

Класс формы сам создает объекты группы и члена при вызове setData(),и он просто проверяет оба класса в validate().Его save() метод будет выглядеть так, как вы сделали выше.

0 голосов
/ 05 августа 2013
$valid = $model1->validate();
$valid = $model2->validate() && $valid;

if($valid)
{
    //your code
}

Это подтвердит обе модели.

0 голосов
/ 25 января 2012

Вы можете использовать

  $model->validate()

метод проверки действительности модели или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...