CakePHP 3 - 比较密码

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)


Ali*_*rim 5

现在在验证器类中有一个方法调用sameAs,用于版本3.2或更高版本。

 $validator -> sameAs('password_match','password','Passwords not equal.');
Run Code Online (Sandbox Code Playgroud)

API