Как проверить разные поля модели в одной форме в Yii?

у меня две модели

1)TblRegistration: $model как объект

 -director
 -experience
 -language

2)TblLogin: $model2 как объект

 -email
 -password

Оба поля включены в TblRegistration/_form.php

По умолчанию проверка полей TblRegistration включена в rules().

представления/tblRegistration/_form.php

<div class="row">
<?php echo $form->labelEx($model,'director'); ?>
<?php echo $form->textField($model,'director',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'director'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,'experience'); ?>
<?php echo $form->textField($model,'experience'); ?>
<?php echo $form->error($model,'experience'); ?>
 </div>

<div class="row">
<?php echo $form->labelEx($model,'language'); ?>
<?php echo $form->textField($model,'language',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'language'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model1,'email'); ?>
<?php echo $form->textField($model1,'email'); ?>
<?php echo $form->error($model1,'email'); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model1,'password'); ?>
<?php echo $form->textField($model1,'password'); ?>
<?php echo $form->error($model1,'password'); ?>
</div>

модели/TblRegistration.php

    public function rules()     {
     // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('director, experience, language', 'required'),
        array('experience', 'numerical', 'integerOnly'=>true),
        array('director, language', 'length', 'max'=>50),
        // The following rule is used by search().
        // @todo Please remove those attributes that should not be searched.
        array('reg_id, director, experience, language', 'safe', 'on'=>'search'),
    );
    }

Я хочу включить поля TblLogin в правила модели/TblRegistraion для проверки.


person Lekhulal Mathalipara    schedule 21.03.2014    source источник


Ответы (1)


Вы можете вручную проверить модель, вызвав метод validate():

if($modelA->validate() && $modelB->validate()) {
    // Call save method, fix foreign keys, etc
    $this->redirect(array('view'));
}

Если есть ошибка, страница не будет перенаправлена, поэтому ваша форма перезагрузится. $form->error() выделит поля с ошибками. Кроме того, если первый аргумент errorSummary является массивом, содержащим ваши модели, он подытожит их все для вас.

person Michiel    schedule 21.03.2014
comment
где я должен поставить это? вы можете привести мне один пример - person Lekhulal Mathalipara; 21.03.2014