Juhi
Juhi

Reputation: 1

i want to submit two form in laravel 5.8

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.

  1. 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

Answers (1)

Rahul Gupta
Rahul Gupta

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

Related Questions