我有一个表单有多个具有相同名称的输入,这些表单是使用jQuery动态添加的。输入名称如下:
ModelName[dynamic_name][]
ModelName[dynamic_name][]
我还在dynamic_name
中将Model
声明为公共变量。如何使用yii2验证规则验证上述输入?
答案 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