Уважение / проверка: Обязательные ключи внутри набора ключей. Как я могу получить отсутствующее имя ключа в сообщениях об ошибках?

Я использую 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...
Другие вопросы по тегам