Я пытаюсь создать многошаговую форму для пользователя, чтобы заполнить ее после входа в систему. Я создал отдельные страницы с формами, которые будут частью общей формы.
Данные будут сохранены в таблица "пользователи".
Я новичок в Laravel, и я следовал этому: https://www.5balloons.info/multi-page-step-form-in-laravel-with-validation/
В моем FormController у меня есть эти методы:
public function index(Request $request)
{
$request->session()->forget('user');
$user = User::all();
return view('form.index',compact('user',$user));
}
public function updateStep1(Request $request)
{
$user = $request->session()->get('user');
return view('form.update-step1',compact('user', $user));
}
public function postupdateStep1(Request $request)
{
$validatedData = $request->validate([
'first_name' => 'required',
]);
if(empty($request->session()->get('user'))){
$user = User::where('id',auth()->user()->id)->first();
$user->fill($validatedData);
$request->session()->put('user', $user);
}else{
$user = $request->session()->get('user');
$user->fill($validatedData);
$request->session()->put('user', $user);
}
return redirect('/form/update-step2');
}
public function updateStep2(Request $request)
{
$user = $request->session()->get('user');
return view('form.update-step2',compact('user', $user));
}
public function postupdateStep2(Request $request)
{
$validatedData = $request->validate([
'address' => 'required',
]);
if(empty($request->session()->get('user'))){
$user = User::where('id',auth()->user()->id)->first();
$user->fill($validatedData);
$request->session()->put('user', $user);
}else{
$user = $request->session()->get('user');
$user->fill($validatedData);
$request->session()->put('user', $user);
}
return redirect('/form/store');
}
public function store(Request $request)
{
$user = User::where('id',auth()->user()->id)->first();
$user = $request->session()->get('user');
$user->save();
return redirect('/form');
}
И это Маршруты:
Route::get('/form', 'FormController@index');
Route::get('/form/update-step1', 'FormController@updateStep1');
Route::post('/form/update-step1', 'FormController@postupdateStep1');
Route::get('/form/update-step2', 'FormController@updateStep2');
Route::post('/form/update-step2', 'FormController@postupdateStep2');
Route::post('/form/store', 'FormController@store');
Это первая часть формы:
@extends('layouts.app')
@section('content')
<h1>update - Step 1</h1>
<form action="/form/update-step1" method="post">
@csrf
<div class="form-group">
<label for="name">First Name</label>
<input type="text" value="{{ old('first_name', $user->first_name ?? null) }}" class="form-control" name="name">
</div>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<button type="submit" class="btn btn-primary">Continue</button>
</form>
@endsection
Я получаю сообщение об ошибке, утверждая, что поля обязательны для заполнения. Поэтому, даже если я введу имя et c., Это не сработает. Если я удаляю проверки, кажется, что все работает, но данные не добавляются в базу данных.
Есть предложения?