Как проверить различные поля модели в одной форме в?Yii
У меня две модели
1)TblRegistration: $ модель как объект
-director
-experience
-language
2)TblLogin: $ model2 как объект
-email
-password
Оба поля включены в TblRegistration/_form.php
По умолчанию проверка полей TblRegistration включена в правила ().
просмотров /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 для проверки.
1 ответ
Вы можете вручную проверить модель, вызвав validate()
метод:
if($modelA->validate() && $modelB->validate()) {
// Call save method, fix foreign keys, etc
$this->redirect(array('view'));
}
В случае ошибки страница не будет перенаправлена, поэтому ваша форма перезагрузится. $form->error()
выделит поля ошибок. Кроме того, когда первый аргумент errorSummary
это массив, содержащий ваши модели, он суммирует их все для вас.