具有相同名称的多个输入的Yii2验证规则

时间:2015-06-09 16:48:09

标签: yii2

我有一个表单有多个具有相同名称的输入,这些表单是使用jQuery动态添加的。输入名称如下:

ModelName[dynamic_name][]
ModelName[dynamic_name][]

我还在dynamic_name中将Model声明为公共变量。如何使用yii2验证规则验证上述输入?

2 个答案:

答案 0 :(得分:5)

由于您的dynamic_name变量将是一个输入值数组,因此您可以使用新的each验证程序。它是在v2.0.4中添加的。它需要一个数组并将每个元素传递给另一个验证器。

例如,要检查每个元素是否为整数:

[['dynamic_name'], 'each', 'rule' => ['integer']],

答案 1 :(得分:1)

yii2,您可以使用 Class yii\validators\EachValidator

查看

<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'dynamic_name[]')->textInput() ?>
<?= Html::submitButton('Submit', ['class' => 'btn', 'name' => 'hash-button']) ?>
<?php ActiveForm::end(); ?>

<强> MODEL

class MyModel extends Model
{
  public $dynamic_name = [];
  public function rules()
  {
    return [
        // checks if every dynamic_name is an integer
        ['dynamic_name', 'each', 'rule' => ['integer']],
    ]
 }
}
  

注意:如果在模型范围之外使用,此验证程序将无法使用内联验证规则,例如:通过validate()方法。

链接:http://www.yiiframework.com/doc-2.0/yii-validators-eachvalidator.html