Reputation: 1
when first form is valid then open second form .and when second is also valid then submit both .second form is generated with the first form data.
EventController.php
public function create() {
$categories = Category::with('subcategory')->where('is_active', 1)->get();
$seat_types = SeatType::where('is_active', 1)->get();
return view('admin.event.create', compact('categories', 'seat_types'));
}
public function store(StoreEventRequest $request) {
$event_data = $request->all();
$s_date = date('Y-m-d H:i:s', strtotime($request->start_time));
$e_date = date('Y-m-d H:i:s', strtotime($request->end_time));
$period = CarbonPeriod::create($s_date, $e_date);
$date_range = [];
$seat_types = SeatType::where('is_active', 1)->get();
foreach($period as $date)
{
$date_range[] = date('d M Y H:i:s', strtotime($date));
}
return view('admin.event.createSeat', compact('date_range'));
}
public function storeSeat(StoreEventSeatRequest $request)
{
dd($request->all());
}
2.event blade file :- create.blade.php
<form action="{{ route('event.store') }}" >
..
</form>
3.event seat blade file :- createSeat.blade.php
<form action="{{ route('event.seat.store') }}">
..
</form>```
4.Request validation file of event :- StoreEventRequest.php
public function rules()
{
return [
'title' => 'required|max:100',
'category_id' => 'required',
'sub_category.*' => 'required',
'start_time' => 'required|unique:events',
'end_time' => 'required|unique:events',
'type' => 'required',
'address' => 'required|max:200',
'image.*' => 'mimes:jpeg,png,jpg,gif,svg',
'image' => 'required|array|min:2',
'banner' => 'required|image|mimes:jpeg,png,jpg,gif,svg',
];
}
5.Request validation file of eventseat :- StoreEventSeatRequest.php
public function rules()
{
return [
'seat_type.*' => 'required',
'quantity.*' => 'required|numeric|gt:0',
];
}
Upvotes: -1
Views: 369
Reputation: 1041
If javascript is not your thing, stick with traditional forms. Its perfectly possible to do it using backend processing only.
Form1 - > collect data and POST to server. Validate form1 data and save the fields in an array in the user's session redirect to form 2
Form2 - > collect data and POST to server. Validate form2 data.
Save from session, step1 data, step2 from the current request.
Tricky if the user needs to press back on any page. You need to look in session and see if you already have in session form data from that step. You can then pass this to the view to repopulate the form with earlier data.
Upvotes: 1