Trait ValidatorAwareTrait
一个提供构建和交互验证器的Trait。
此Trait在构建ORM类似功能时很有用,其中实现类希望构建和自定义各种验证器实例。
此Trait期望包含它的类定义三个常量
DEFAULT_VALIDATOR
- 默认验证器名称。VALIDATOR_PROVIDER_NAME
- 包含类在验证器中分配的提供者名称。BUILD_VALIDATOR_EVENT
- 构建验证器时触发事件的名称。
如果包含类还实现了事件,则在创建验证器时会触发 Model.buildValidator
事件。
属性摘要
-
$_validatorClass protected
string
验证器类。
-
$_validators protected
arrayCake\Validation\Validator>
一个按名称索引的验证对象列表
方法摘要
-
createValidator() protected
使用类中的自定义方法创建验证器。
-
getValidator() public
返回标记为 $name 的验证规则。可以有多个不同的命名验证集,这在您需要在系统中不同例程中保存时使用不同规则时很有用。
-
hasValidator() public
检查是否已设置验证器。
-
setValidator() public
此方法在给定名称下存储自定义验证器。
-
validationDefault() public
返回默认验证器对象。子类可以覆盖此函数以向验证器对象添加默认验证集。
-
validationMethodExists() protected
检查验证方法是否存在。
方法详情
createValidator() ¶ protected
createValidator(string $name): Cake\Validation\Validator
使用类中的自定义方法创建验证器。
此方法仅用于构建新的验证器,它不会将其存储在您的对象中。如果您想构建和重用验证器,请改用 getValidator() 方法。
参数
-
string
$name 要创建的验证集的名称。
返回
Cake\Validation\Validator
抛出
InvalidArgumentException
getValidator() ¶ public
getValidator(string|null $name = null): Cake\Validation\Validator
返回标记为 $name 的验证规则。可以有多个不同的命名验证集,这在您需要在系统中不同例程中保存时使用不同规则时很有用。
如果之前没有设置验证器,此方法将使用类中的方法构建验证器。
例如,如果您希望创建一个名为 'forSubscription' 的验证集,您需要在 Table 子类中创建一个方法,如下所示
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
}
$validator = $this->getValidator('forSubscription');
如果您希望有一个在未指定其他集的情况下适用的验证集,您可以在 Table 子类中的 validationDefault
中实现该方法。
如果没有提供 $name 参数,将返回默认验证器。您可以在 DEFAULT_VALIDATOR
类常量中配置默认验证器名称。
参数
-
string|null
$name optional 要返回的验证集的名称。
返回
Cake\Validation\Validator
hasValidator() ¶ public
hasValidator(string $name): bool
检查是否已设置验证器。
参数
-
string
$name 验证器的名称。
返回
bool
setValidator() ¶ public
setValidator(string $name, Cake\Validation\Validator $validator): $this
此方法在给定名称下存储自定义验证器。
您可以自行构建对象并将其存储在您的对象中
$validator = new \Cake\Validation\Validator();
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$this->setValidator('forSubscription', $validator);
参数
-
string
$name 要设置的验证器的名称。
-
Cake\Validation\Validator
$validator 要设置的验证器对象。
返回
$this
validationDefault() ¶ public
validationDefault(Cake\Validation\Validator $validator): Cake\Validation\Validator
返回默认验证器对象。子类可以覆盖此函数以向验证器对象添加默认验证集。
参数
-
Cake\Validation\Validator
$validator 可以修改以添加一些规则的验证器。
返回
Cake\Validation\Validator
validationMethodExists() ¶ protected
validationMethodExists(string $name): bool
检查验证方法是否存在。
参数
-
string
$name 验证方法名称。
返回
bool