Validator можно создать используя Validator facade. Например, из документации:
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
Далее можно проверить результат валидации и выполнить какие-то действия:
if ($validator->fails()) {
// что-то выполняем
}
Validator имеет метод setData, которые позволяет задать набор данных для валидации. Можно после первого выполнения валидации заменить набор данных с помошью метода setData и используя имеющийся экземпляр Valdator провалидироать новый набор данных.
Не противоречит ли это идеологии Validator в Laravel? Дело в том, что ни в документации, ни в примерах использования Validator где-либо, не встречал ПОВТОРНОГО использования созданного экземпляра Validator. Но и не встречал каких-либо описаний ограничений.
Например, задача в консольном приложении получать в цикле ввод пользователя. Приложение обрабатывает ввод и ожидает следующий ввод, завершается приложение, например, по "Ctrl+C".
Упрощенный максимально код примерно такой:
$message = $this->ask(‘You message:’);
$validator = Validator::make([
‘message’ => $message,
], [
‘message’ => [‘required|max:200’],
]);
while (true){
if ($validator->fails()) {
//show errors
} else {
// do something
}
$message = $this->ask(‘You message:’);
$validator->setData([‘message’ => $message]);
}