Уважение / проверка: Обязательные ключи внутри набора ключей. Как я могу получить отсутствующее имя ключа в сообщениях об ошибках?
Я использую https://github.com/Respect/Validation, и я создал следующие правила для проверки и ассоциативного массива:
Validator::keySet(
Validator::key( // mandatory, if included type: string, values: not null, not empty
'name',
Validator::stringType()->notEmpty()
),
Validator::key( // mandatory, if included type: string, values: not null, not empty
'company',
Validator::stringType()->notEmpty()
),
Validator::key( // mandatory, if included type: string, values: not null, not empty
'type',
Validator::stringType()->notEmpty()
),
Validator::key( // mandatory, if included type: string, values: not null, not empty
'country',
Validator::stringType()->notEmpty()
),
Validator::key( // optional, if included type: string, values: not null, not empty
'comment',
Validator::stringType()->notEmpty(),
false
)
);
и когда я проверяю массив, он работает нормально, но если некоторые из обязательных ключей отсутствуют (скажем, ключ "компании"), я всегда получаю сообщение об ошибке вроде:
- Must have keys { "name", "company", "type", "country", "comment" }
Но я хотел бы настроить сообщения об ошибках и получить что-то вроде:
"company" field is missing
Я пробовал:
$errors = $exception->findMessages([
...
'keyset' => '{{name}} field is missing',
....
]);
но {{name}}
включает в себя весь массив с ключом и значениями...
Есть ли способ получить это сообщение об ошибке настройки? я должен включить другой {{placeholder}}
?
заранее спасибо
0 ответов
Вы можете попробовать следующее:
Validator::key( // mandatory, if included type: string, values: not null, not empty
'company',
Validator::stringType()->notEmpty()->setName('company')
),
Или
Validator::key( // mandatory, if included type: string, values: not null, not empty
'company',
Validator::stringType()->notEmpty()->setName('company')->setTemplate('"{{name}}" field is missing')
),
https://respect-validation.readthedocs.io/en/1.1/feature-guide/
Имя валидатора
В v::attribute() и v::key() {{name}} - это имя атрибута / ключа. Для других то же самое, что и ввод. Вы можете настроить имя валидатора, используя:
v::date('Y-m-d')->between('1980-02-02', 'now')->setName('Member Since');
https://respect-validation.readthedocs.io/en/1.1/feature-guide/
Типы исключений
Respect\Validation\Exceptions\ExceptionInterface: All exceptions implement this interface; Respect\Validation\Exceptions\ValidationException: Implements the Respect\Validation\Exceptions\ExceptionInterface interface Thrown when the check() fails All validation exceptions extend this class Available methods: getMainMessage(); setMode($mode); setName($name); setParam($name, $value); setTemplate($template); more... Respect\Validation\Exceptions\NestedValidationException: Extends the Respect\Validation\Exceptions\ValidationException class Usually thrown when the assert() fails Available methods: findMessages(); getFullMessage(); getMessages(); more...