Перевод или написание пользовательских сообщений по 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;
}