【问题标题】:How to validate different model fields in one form in ?Yii如何在 ?Yii 中以一种形式验证不同的模型字段
【发布时间】:2014-04-28 10:13:00
【问题描述】:

我有两个模型

1)TblRegistration : $model 作为对象

 -director
 -experience
 -language

2)TblLogin : $model2 作为对象

 -email
 -password

这两个字段都包含在 TblRegistration/_form.php 中

默认情况下,TblRegistration 字段验证包含在 rules() 中。

views/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>

models/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 规则中以进行验证。

【问题讨论】:

    标签: php validation yii validationrules


    【解决方案1】:

    您可以通过调用validate() 方法手动验证模型:

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

    如果出现错误,页面将不会被重定向,因此您的表单将重新加载。 $form-&gt;error() 将突出显示错误字段。此外,当errorSummary 的第一个参数是一个包含您的模型的数组时,它会为您汇总它们。

    【讨论】:

    • 我必须把这个放在哪里?你能给我一个例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多