Здравствуйте.
В laravel во всех мануалах рекомендуется валидировать данные через запросы, но что если мне нужная валидация в консольном вызове инициализировать запрос? Много запросов на каждые из сущностей данные из которых я должен провалидировать ? Есть аналог model из yii , чтобы я мог проверять исключительно данные (типа формы своей) ?
Представьте что вам нужно вызвать консольную команду и там создать 3 разных сущности , как валидировать их данные , например на фронте у нас там была своя валидация в контроллере, тут ее теперь тоже дублировать т.е. тот же Request использовать или набор правил . Можно даже представить что Вам нужно отвалидирлвать данные для 3х сущностей а потом сохранить их например если они все валидность
Как тогда валидировать любые данные в консоли ? Свою обёртку над валидацией делать ?
Валидируем данные массива (примерно так)
$array = [
'title' => 'Есть ли analog model в Laravel?',
'body' => 'Как тогда валидировать любые данные в консоли ? Свою обёртку над валидацией делать ?',
'user' => [
'id' => 'Kekoc',
],
];
$validator = Validator::make($array, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
'user.name' => 'required|unique:users|max:255',
]);
Максим Федоров, ага, вот только что если у вас изменились правила валидации, по всему проекту надо будет менять эти правила, хотя я например обернул это дело в свой объект. А как другие люди это делают ? Таскают копипасту с правилами ?
Максим Федоров, Данное решение позиционируется как для консольной команды, но опять же я по "правильному подходу" должен буду иметь объект с правилами валидации для консоли и для веб запросов
Kekoc,
ну смотрите -- выше я вам дал решение для массива,
1. можно сделать отдельный класс с валидацией,
2. переделать веб контроллер так, чтобы отдавать в валидацию не реквест, а массив, например так можно
$data = $request->all();
$data['new_feature'] = 'Feature'; // добавим произвольное поле
и в свой метод класса валидации передавайте этот массив $data
в итоге у вас получится слой модели валидации, как в Yii2 никто не будет впиливать это в модель Active Record, тк по принципу Simple Responsibility из SOLID это не ее обязанность и сложно тестировать такие модели...
Тут работы не так уж и много (если у вас там не легаси) 00 сделайте свои классы и испоьзуйте встроенные возможности... фреймворк не мешает вам создавать свои классы и свою логику
Максим Федоров, так и сделал. Просто думал может есть решение о котором мне не известно. В yii2 у меня тоже валидации не в модели, а в сторонних формах. Спасибо.