Yii2独特的验证器作为ad-hoc验证器



如何转换:

public function rules() {
return [
[['attr1', 'attr2'], 'unique', 'skipOnEmpty' => false, 'skipOnError' => false, targetAttribute' => ['attr1', 'attr2']],

内联验证器中,或者与内联验证器等效的是什么?非常感谢。

如中所述,无法将Unique验证器作为临时验证器使用https://www.yiiframework.com/doc/guide/2.0/en/input-validation#ad-特殊验证:

Note: Not all validators support this type of validation. An example is the unique core validator which is designed to work with a model only.

你必须自己建造它。

另一种方法可以是将查询封装到try-catch中,假设您在数据库上有一个唯一的键。数据库会对查询进行投诉,您可以发现错误。


在线验证编辑:

这是一个非常特殊的验证器,您不会重复使用,因此,让我们将其作为匿名函数内联编写:

public function rules(){
[['attr1'], function(){
//we know the names of the attribute so we use them here directly instead of pass as a parameter
if(self::find()->where([
'attr1' => $this->attr1, 
'attr2' => $this->attr2
])->exists()){
$this->addError('attr1', 'Error message');
$this->addError('attr2', 'Error message');
}
}]
}

注意,我刚刚注册了attr1的验证。如果同时注册attr2,则每个属性将出现2个错误。

相关内容

  • 没有找到相关文章

最新更新