Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не работает Create в Laravel

Дима Знаток (317), на голосовании 2 недели назад
При добавлении пользователя в форму ничего не происходит, редерект на главную тоже не работает что делать?








Голосование за лучший ответ
Татьяна Просветленный (32636) 1 неделю назад
Создание нового пользователя в Laravel может не работать по нескольким причинам. Давайте рассмотрим возможные ошибки и пути их решения.

Маршрутизация (Routes):
Убедитесь, что маршруты настроены правильно и используются необходимые методы HTTP (POST для создания). В файле web.php это выглядит правильно:
 Route::post('workers', [\App\Http\Controllers\WorkerController::class, 'store'])->name('worker.store'); 
Контроллер (Controller):
Проверьте, что метод store в контроллере WorkerController получает и обрабатывает данные правильно. В вашем коде это выглядит так:
 public function store(StoreRequest $request) 
{
$data = $request->validated();
$data['is_married'] = isset($data['is_married']);
Worker::create($data);
return redirect()->route('worker.index');
}
Убедитесь, что все поля формы соответствуют полям, ожидаемым в методе store.

Форма (Form):
Проверьте, что форма отправляет данные методом POST и что маршрут указан правильно:
 

@csrf



Убедитесь, что вы включили CSRF-токен (@csrf) в форму.

Валидация (Validation):
Убедитесь, что валидация данных запроса настроена правильно. В файле StoreRequest.php это выглядит так:
 public function rules(): array 
{
return [
'name' => 'required|string',
'surname' => 'required|string',
'mail' => 'required|email',
'age' => 'required|integer',
'description' => 'nullable|string',
'is_married' => 'nullable|string',
];
}
Отладка:
Добавьте отладочные строки, чтобы проверить, поступают ли данные в контроллер и проходят ли валидацию:
 public function store(StoreRequest $request) 
{
$data = $request->validated();
dd($data); // отладка
$data['is_married'] = isset($data['is_married']);
Worker::create($data);
return redirect()->route('worker.index');
}
Консоль ошибок:
Проверьте консоль браузера на наличие ошибок JavaScript, а также лог ошибок сервера (storage/logs/laravel.log) на наличие ошибок PHP.
Похожие вопросы