Generalnie można uzyskać dostęp do wszystkich danych w custom validation rule poprzez $context
argumentu, gdzie jest przechowywana w kluczu data
, tj $context['data']['confirm_password']
, które można następnie porównać do aktualnej wartości pól.
$validator->add('password', 'passwordsEqual', [
'rule' => function ($value, $context) {
return
isset($context['data']['confirm_password']) &&
$context['data']['confirm_password'] === $value;
}
]);
Powiedział, że niedawno reguła compareWith
walidacja została wprowadzona który robi dokładnie to.
https://github.com/cakephp/cakephp/pull/5813
$validator->add('password', [
'compare' => [
'rule' => ['compareWith', 'confirm_password']
]
]);
Jak ustawić wiadomość? "Password Invalid" przy użyciu "compareWith" – TMoraes
OK, tylko "message" => 'Password Invalid ".. Ale chciałbym wiedzieć, Jak zrobić, aby pokazać tę wiadomość poniżej pola_hasła_prawdu? Ponieważ pokazuje to pole hasła poniżej. – TMoraes
@ThiagoMoraes Po prostu dodaj tę samą regułę dla pola 'confirm_password' i porównaj z' password' . – ndm