【发布时间】:2015-09-17 19:57:47
【问题描述】:
好的,我相信我会有很多自定义验证,所以我决定按照Yii Standalone Validation Doc 创建一个独立的验证类。
这个特定的验证器是为了确保 company_name 或 name 被填写,所以要么是必需的。
我已经在 app\components\validators\BothRequired.php 中创建了类
<?php
namespace app\components\validators;
use Yii;
use yii\validators\Validator;
class BothRequired extends Validator
{
public function validateAttribute($model, $attribute)
{
//validation code here
}
}
这是模型
public function rules()
{
return [
['company_name', BothRequired::className(), 'skipOnEmpty' => false, ],
];
}
但是,此验证需要将一些参数传递给此示例中的验证,我需要发送需要检查的第二个属性。我似乎无法弄清楚如何做到这一点,如果我在模型本身中创建验证规则,那么我可以传递 $params 但我不知道如何传递给这个独立类。
另外一点,对我来说更好的是,如果我可以有一个包含所有自定义验证器的类,而不是每个验证器一个文件。
有什么想法吗?
问候
【问题讨论】:
-
我的猜测是,如果你在验证器类上有属性,那么你可以通过在规则中发送
'attribute' => <value>来填充它们(比如'skipOnEmpty',我敢打赌它是@ 的一个属性987654326@。这似乎是 Yii 会做的事情。 -
我尝试过传递各种变量,'params','other'。首先它抱怨它不是一个属性,然后如果我将它设置为类中的公共属性,则不会发生任何其他事情
-
好的,谢谢,你把我推向了正确的方向,我会添加答案
标签: php validation yii2