介绍
对验证的规则进行管理,验证器是规则管理器的子类,如果你仅需要对规则进行管理,可直接继承该类。
class UserRulesManager extends RuleManager
{
protected $rule = [
'user' => 'required|email',
'pass' => 'required|lengthBetween:6,16',
'name' => 'required|chs|lengthBetween:2,4',
'remark' => 'required|alpha_dash',
'captcha' => 'required|length:4|checkCaptcha',
];
protected $scene = [
'login' => ['user', 'pass'],
'captcha' => ['captcha']
];
protected $customAttributes = [
'user' => '用户名',
'pass' => '密码',
'name' => '昵称',
'remark' => '备注',
'captcha' => '验证码',
];
protected $message = [
'captcha.checkCaptcha' => '验证码错误',
'user.email' => '用户名必须为邮箱',
'pass.lengthBetween' => '密码长度错误'
];
protected function sceneRegister(RuleManagerScene $scene)
{
return $scene->only(['user', 'pass', 'name', 'remark'])
->remove('remark', 'required|alpha_dash')
->append('remark', 'chs');
}
protected function sceneRegisterNeedCaptcha(RuleManagerScene $scene)
{
return $this->sceneRegister($scene)->appendCheckField('captcha');
}
public function ruleCheckCaptcha($att, $value): bool
{
return true;
}
}
提示
在规则管理器中,可以使用自定义规则一节中提到的方式来扩展规则和错误消息
获取规则
可以直接调用类的静态方法get
来获取规则、错误消息、属性名称
public static function get($fields = null, bool $initial = false): array
$fields
要获取的字段名称,如果为null,则获取所有规则$initial
是否获取原始规则,默认为false,即解析后的规则
UserRulesManager::get('user');
请注意
如果想应用验证场景的规则,请实例化类后使用scene
方法指定验证场景后再调用get
方法
(new UserRulesManager())->scene('register')->get('user');
将返回
Array
(
[0] => Array
(
[user] => Array
(
[0] => required
[1] => email
)
)
[1] => Array
(
[user.email] => 用户名必须为邮箱
)
[2] => Array
(
[user] => 用户名
)
)
获取指定验证场景下所有的规则、错误消息、属性名称,可直接使用getBySceneName
静态方法:
UserRulesManager::getBySceneName('register');
也可以直接调用静态方法
UserRulesManager::register();
单独获取
如果想单独的获取规则,错误消息,属性名称,你可以实例化规则管理器后使用下列方法:
getRules
获取规则getCustomAttributes
获取属性名称getMessages
获取错误消息
请注意
getRules
方法受scene
方法影响,不同的场景下取出的规则可能不同