уникальное правило валидации - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь использовать Illuminate \ Validation в качестве автономной библиотеки, и она не работает с уникальным правилом. ошибка: Uncaught RuntimeException: верификатор присутствия не был установлен. вот мой код:

$fileLoader = new Translation\FileLoader(new Filesystem\Filesystem(), '');
$factory = new Validation\Factory( new Translation\Translator($fileLoader, 'en_US') );

$d = ['name' => 'te' ];
$rules = [
    'name' => [Rule::unique('page')],
];

$validator = $factory->make($d, $rules);

if($validator->fails()){
    $errors = $validator->errors();
    foreach($errors->all() as $message){
        d($message);
    }
}

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Правило unique предназначено для проверки уникальности значения в базе данных. Валидатор проверяет «уникальность» в базе данных способом «проверки присутствия». Вы не предоставили никакой проверки присутствия, поэтому видите ошибку. Чтобы предоставить верификатор присутствия, вам нужно добавить этот дополнительный код

$presenceVerifier = new MyPresenceVerifier();
$factory->setPresenceVerifier($presenceVerifier);

, где MyPresenceVerifier - реализация контракта \Illuminate\Validation\PresenceVerifierInterface. Поскольку вы используете валидатор в качестве автономной библиотеки, вам необходимо создать собственную реализацию верификатора присутствия для любой используемой вами базы данных. Вы можете найти пример реализации в официальном репозитории Laravel:

https://github.com/laravel/framework/blob/master/src/Illuminate/Validation/DatabasePresenceVerifier.php

0 голосов
/ 29 августа 2018

Попробуйте это ::

$this->validate($request, 
    ['email' => 'required|exists:users,email'],
    ['email.exists' => 'You are not registered User. Please register.']
); 

пользователей = Ваше имя таблицы

электронная почта = Имя поля вашей таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...