Перевод или написание пользовательских сообщений по Respect/Validation

Я использую Respect для проверки некоторых форм в проекте, но этот проект написан на испанском языке, и я не понимаю, как работают сообщения после долгого чтения документации и даже ее кода.

Я использую Slim и использую исключение NestedValidationException, следуя примеру, который я прочитал в учебнике на Youtube.

Это метод проверки:

public function validate($request, array $rules) 
    {
        foreach ($rules as $field => $rule) {
            try {
                $rule->setName(ucfirst($field))->assert($request->getParam($field));
            } catch (NestedValidationException $e) {
                    $e->findMessages([
                    'usernameAvailable' => '{{name}} ya existe en la base de datos',
                    'emailAvailable' => '{{name}} ya existe en la base de datos',
                    'notEmpty' => '{{name}} no puede estar vacío',
                    'noWhitespace' => '{{name}} no puede contener espacios',
                    'email' => '{{name}} debe contener un e-mail válido'
                ]);
                 //In English it's enough with 
                 //$this->errors[$field] = $e->getMessages();
                     $this->$errors[$field] = $e->getMainMessage();

            }
        }

        $_SESSION['errors'] = $this->errors;



        return $this;
    }

Я видел некоторые ответы раньше, но некоторые очень трудно понять, так как я не собираюсь делать полный перевод библиотеки. Я просто пытаюсь написать 5 или 6 пользовательских сообщений.

РЕДАКТИРОВАТЬ: метод с использованием сообщений:

 $validation = $this->c->validator->validate($request, [
            'username' => v::noWhitespace()->notEmpty()->usernameAvailable(),
            'email'  => v::noWhitespace()->notEmpty()->email()->emailAvailable(),
            'password1' => v::noWhitespace()->notEmpty(),
            'password2' => v::noWhitespace()->notEmpty()->identical($inputPassword),

        ]);

1 ответ

С помощью findMessages с параметром вы переводите сообщения. Вы просто должны заменить содержимое в catch блок:

catch (NestedValidationException $e) {
    $errors = $e->findMessages([
        'usernameAvailable' => '{{name}} ya existe en la base de datos',
        'emailAvailable' => '{{name}} ya existe en la base de datos',
        'notEmpty' => '{{name}} no puede estar vacío',
        'noWhitespace' => '{{name}} no puede contener espacios',
        'email' => '{{name}} debe contener un e-mail válido'
    ]);
    $filteredErrors = array_filter($errors); // Ensure the array is not containing empty values
    $this->$errors[$field] = $filteredErrors;
}
Другие вопросы по тегам