Php 在Yii2验证规则中传递多维数组?

Php 在Yii2验证规则中传递多维数组?,php,yii,yii2,Php,Yii,Yii2,在模型中使用Yii2的验证规则时,例如: [['foo','bar'], 'integer], 显然,['foo','bar']是一个数组,我知道你可以使用它 但是可以像这样传递多维数组: $this->numbers = [1,2,3]; [['foo','bar','numbers'], 'integer] Yii2会接受此选项并检查正确的数据,还是会测试值并返回错误,因为numbers是一个数组?工作规则需要合并数组 [ArrayHelper::merge(['foo','ba

在模型中使用Yii2的验证规则时,例如:

[['foo','bar'], 'integer],
显然,
['foo','bar']
是一个数组,我知道你可以使用它

但是可以像这样传递多维数组:

$this->numbers = [1,2,3];

[['foo','bar','numbers'], 'integer]

Yii2会接受此选项并检查正确的数据,还是会测试值并返回错误,因为
numbers
是一个数组?

工作规则需要合并数组

[ArrayHelper::merge(['foo','bar'], $this->getNumberFields()), 'integer']
更新:

使用每个规则。看


什么是
$this->getNumberFields()
?模型中返回字段名数组的函数,如
['dynamicintegerfielddone','integerFieldTwo']
@Brett
[ArrayHelper::merge(['foo','bar',$this->numbers),'integer']
可以工作。进行验证时,将始终重新创建规则。因此,
$this->numbers
可以从一个验证更改为下一个验证,如果这很重要的话。@Brett不确定你的意思。如果您这样做合并整数验证将完成5个属性:foo,bar,dog,cat,fish。这些属性应该具有整数值。它们不需要显式声明,但在进行验证时它们应该存在。这不是你想要的吗?@brett Yii2会出错的。如果规则为整数,则数字应为整数。您需要
每个
规则。如果您想使用某些允许的值创建验证,可能会对您有所帮助。你是说foo和bar只能有值1、2或3?还是数字应该是整数数组?是的,如果这些属性是“正常”整数,则需要与foo和bar分开定义。@robsch Yep,第二个。我已将它们移动到使用每个
验证器。
public function rules()
{
    return [
        ['numbers', 'each', 'rule' => ['integer']],
    ]
}