Я написал этот код в контроллере как действие формы:
public function submitAsk(Request $request)
{
$rules = [
'title' => 'required|max:255',
'description' => 'required|max:1000',
'category' => 'required',
'tags' => 'required',
];
$messages = [
'required' => ':attribute can not be empty'
];
$validator = Validator::make($request, $rules, $messages);
if ($validator->fails()) {
return redirect('questions/ask')
->withErrors($validator)
->withInput();
}
...
}
Но я получаю эту ошибку:
Illuminate\Validation\Factory::make(): Аргумент #1 ($data) должен иметь тип array, Illuminate\Http\Request задан, вызывается в C:\projectname\vendor\laravel\framework\src\Illuminate\Support\ Facades\Facade.php в строке 338
Как я могу решить эту проблему?
Ну, вы передаете $request напрямую вместо $request->all()
@brombeer я просто скопировал и вставил код оттуда, так что это означает, что это не помогает
«Я просто скопировал и вставил код оттуда», держу пари, что вы этого не сделали. В каждом примере на этой странице используется $request->all()






У вас просто проблема с синтаксисом:
Вы должны передать массив $request->all(), а не $request instance
$validator = Validator::make($request->all(), $rules, $messages);
Ссылка: https://laravel.com/docs/9.x/validation#manually-creating-validators