#laravel #laravel-validation
#laravel #laravel-проверка
Вопрос:
У меня есть набор правил проверки в FormRequest, Laravel 6.X, например, так:
{
return [
'rule1' => 'required|numeric',
'rule2' => 'required|numeric',
...,
'ruleN.*.rule1' => ''required|string|max:50'
];
}
Это отлично работает для каждого HTTP-запроса AJAX к конечной точке, для которой он был создан. Однако мне также нужно запустить тот же процесс (на этот раз проверить не запрос, а массив входных данных) с помощью команды CLI, где этот FormRequest нельзя использовать, поскольку это не будет запрос.
Пытаясь ввести FormRequest в команду типа:
public function handle(CustomFormRequest $validator)
{
...
}
выполнение команды всегда завершается неудачей (конечно) при каждом запуске, поскольку тип ввода не является запросом.
Немного погуглив, я пришел к решению в форме (правила будут такими же, как ofc):
$validator = Validator::make([
'rule1' => $firstName,
'rule2' => $lastName,
], [
'rule1' => ['required'],
'rule2' => ['required'],
]);
Однако я хотел бы поделиться набором правил в общем месте (например, в файле) и что как FormRequest, так И класс Validator могут использовать одни и те же правила, без записи в обоих местах (запрос формы и команда), чтобы сохранить их неизменными при любых изменениях.
Есть ли способ записать массив «правил» в общем месте (например, в файле) и импортировать их в оба места? Возможно, базовый класс будет работать, но это выглядит неправильно, поскольку они не разделяют ничего, кроме этого. Я подумал об одной черте, но я сомневаюсь, что это может быть лучшим решением.
Комментарии:
1.
rules()
Иattributes()
методы FormRequest являются общедоступными, поэтому вы можете создать новый экземпляр вашего FormRequest и получить из него правила / атрибуты, что-то вроде этого:$validator = Validator::make($data, (new YourFormRequest())->rules());
2. мм, я не думал об этом. Я попробую. Спасибо! 🙂