TMo*_*aes 7 php cakephp cakephp-3.0
我有两个字段"密码"(此字段在数据库中)和confirm_password(此字段不在数据库中)
好吧,我需要比较密码== confirm_password ..但我不知道为"confirm_password"创建自定义验证...需要在数据库中有这个字段吗?
我该怎么办?
ndm*_*ndm 24
通常,您可以通过参数访问自定义验证规则中的所有数据,该$context参数存储在data密钥中,即$context['data']['confirm_password'],您可以将其与当前字段值进行比较.
$validator->add('password', 'passwordsEqual', [
'rule' => function ($value, $context) {
return
isset($context['data']['confirm_password']) &&
$context['data']['confirm_password'] === $value;
}
]);
Run Code Online (Sandbox Code Playgroud)
话虽如此,最近compareWith引入了验证规则,这正是如此.
https://github.com/cakephp/cakephp/pull/5813
$validator->add('password', [
'compare' => [
'rule' => ['compareWith', 'confirm_password']
]
]);
Run Code Online (Sandbox Code Playgroud)
现在在验证器类中有一个方法调用sameAs,用于版本3.2或更高版本。
$validator -> sameAs('password_match','password','Passwords not equal.');
Run Code Online (Sandbox Code Playgroud)
见API