Как изменить сообщение по умолчанию в Respect Validation?

Я использую Respect Validation для сопоставления паролей в приложении Slim:

class PasswordController extends Controller
{
;
;
public function postChangePassword($request, $response) {
$validation = $this->validator->validate($request, [
'password_old' => v::noWhitespace()->notEmpty()->matchesPassword($this->auth->user()->password),
'password' => v::noWhitespace()->notEmpty()
]);

if($validation->failed()) {
// stay on the same page
}

die('update password');
}
}

Я могу аутентифицировать пароль:

class MatchesPassword extends AbstractRule
{
protected $password;

public function __construct($password) {
$this->password = $password;
}

public function validate($input) {
// compare the non-hashed input with the already hashed password
}
}

…и я создал свою собственную строку для третьего правила (‘password_old’):

class MatchesPasswordException extends ValidationException
{
public static $defaultTemplates = [
self::MODE_DEFAULT => [
self::STANDARD => 'Password does not match.',
],
];
}

Сценарий работает нормально, я получаю следующее сообщение при отправке с ‘Password_old’ поле пустое:
«Password_old не должен быть пустым«

Я хотел бы изменить вышеуказанное сообщение по умолчанию на пользовательскую строку, например:
«Значение не должно быть пустым«

0

Решение

Вы можете перезаписать сообщения, используя findMessages метод ValidationException и используя assert:

try {
v::noWhitespace()->notEmpty()->matchesPassword($this->auth->user()->password)->assert($request->getParam('password_old'));
v::noWhitespace()->notEmpty()->assert($request->getParam('password'));
} catch (ValidationException $exception) {
$errors = $exception->findMessages([
'notEmpty' => 'The value must not be empty'
]);
print_r($errors);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]