Как изменить сообщение по умолчанию в 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 не должен быть пустым"

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

1 ответ

Вы можете перезаписать сообщения, используя 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);
}
Другие вопросы по тегам