Проблема перенаправления данных в правильную фазу в многошаговой форме - PullRequest
0 голосов
/ 14 октября 2018

Я работаю над многошаговой формой, бэкэнд которой - Laravel.Основное представление содержит многоэтапную форму, и я перетаскиваю различные фазы формы в один файл.Я хочу, чтобы, когда пользователь заполняет 1-ю фазу формы и нажимает кнопку «Отправить», данные отправляются на сервер для проверки, хранения (посредством чего я сохраняю в API) и вычисляем некоторые данные, а затем, наконец, перенаправляем сгенерированные данные на фазу 2.формы.

Проблема в том, что данные не перенаправляются правильно.Как я могу перенаправить данные в основной макет, а затем в конкретную фазу (в данном случае, фазу 2)?

Основная компоновка многофазной формы, которая вытягивает другие фазы формы

@extends('B2C::layouts.app')

@section('content')
<div class="container">
<main class="top">

<div class='progress'>
  <div class='progress_inner'>
    <div class='progress_inner__step'>
      <label for='step-1'>Travel Information</label>
    </div>
    <div class='progress_inner__step'>
      <label for='step-2'>Choose Plan</label>
    </div>
    <div class='progress_inner__step'>
      <label for='step-3'>Additional Information</label>
    </div>
    <div class='progress_inner__step'>
      <label for='step-4'>Payment</label>
    </div>
    <div class='progress_inner__step'>
      <label for='step-5'>Confirmation</label>
    </div>
    <input checked='checked' id='step-1' name='step' type='radio'>
    <input id='step-2' name='step' type='radio'>
    <input id='step-3' name='step' type='radio'>
    <input id='step-4' name='step' type='radio'>
    <input id='step-5' name='step' type='radio'>
    <div class='progress_inner__bar'></div>
    <div class='progress_inner__bar--set'></div>
    <div class='progress_inner__tabs'>

<!-- Phase 1-->
<div class='tab tab-0'>

<div class="form-contact">
<form method="POST" action="{{ route('b2c.getplans') }}" id="travel_form"  accept-charset="UTF-8">
        <div class="form-line registar love {{ $errors->has('FirstName') ? ' has-error' : '' }}">
          <!-- CSRF TOKEN-->
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
          <input type="text-area" class="form-input" name="FirstName" id="FirstName" value="{{ old('FirstName') }}" required>
          <label>First Name *</label>
          <div class="error-label">Field is required!</div>
          <div class="check-label"></div>
           @if ($errors->has('FirstName'))
                <span class="help-block">
                    <strong>{{ $errors->first('FirstName') }}</strong>
                </span>
            @endif
        </div>

        <div class="form-line registar love {{ $errors->has('MiddleName') ? ' has-error' : '' }}">
          <input type="text-area" class="form-input" name="MiddleName" id="MiddleName"  value="{{ old('MiddleName') }}" required>
          <label>Middle Name *</label>
          <div class="error-label">Field is required!</div>
          <div class="check-label"></div>
          @if ($errors->has('MiddleName'))
                <span class="help-block">
                    <strong>{{ $errors->first('MiddleName') }}</strong>
                </span>
          @endif
        </div>

    <button type="submit" class="form-b3c love" style="cursor:pointer;"> Get Plans</button>

  </form>
</div>
</div>
<!-- END PHASE 1-->


 <!-- PHASE 2-->
<div class="tab tab-1">
    <div class="row">
       @include('B2C::travel.plans')
    </div>
</div>
<!-- END PHASE 2-->


<!-- PHASE 3-->
<div class='tab tab-2'>
  <h1 class="quote-title">Additional Information<a href="#"><span class="back-us"><i class="fas fa-arrow-left"></i>Back</span></a></h1>
  <div class="form-contact">
    @include('B2C::travel.additional')
  </div>
</div>
<!-- END PHASE 3-->

<!-- PHASE 4-->
<div class='tab tab-3'>
     @include('B2C::travel.payment')
  </div>
<!-- END PHASE 4-->


<!-- PHASE 5-->
<div class='tab tab-4'>
    @include('B2C::travel.payment-confirm')
</div>
<!-- END PHASE 5-->
</div>
    <div class='progress_inner__status'>
      <div class='box_base'></div>
      <div class='box_lid'></div>
      <div class='box_ribbon'></div>
      <div class='box_bow'>
        <div class='box_bow__left'></div>
        <div class='box_bow__right'></div>
      </div>
      <div class='box_item'></div>
      <div class='box_tag'></div>
      <div class='box_string'></div>
    </div>
  </div>
</div>


</main>
</div>  
@endsection

Файл маршрутов

Route::post( '/getplans', 'B2CController@validatePlanEntries')->name('b2c.getplans');

Контроллер, который выполняет логику 1-й фазы формы и перенаправляет на фазу 2

   public
        function validatePlanEntries(Request $request)
        {

            $validation = $this->validate($request, [
                'FirstName' => 'required|string|min:2',
                'MiddleName' => 'required|string|min:2',
            ]
            );

            $data = array(
                'FirstName' => $request->FirstName,
                'MiddleName' => $request->MiddleName,
            );

            /*Posts data to an API*/
            $travelplan_data = $this->global_Curl(
                $data, 'api/travel/get-plans')->data;

            // dd($travelplan_data);

            /*Saves the data in a variable called Plans*/
            $plans = $travelplan_data;

            /*Gets the cover options from another API*/
            $benefits = $this->global_Curl_get('api/travel/travel-plan-packages')->data;

            $plans_benefits = [];
            foreach ($plans as $plan) {
                $travel_plan = [];
                $travel_benefits = [];

                $plan_name = $plan->Calculation_TravelPlan->TravelPlan->Name;
                // dd($plan_name);
                foreach ($benefits as $benefit) {
                    // dd($benefit);
                    if ($plan_name == $benefit->plan_type)
                        array_push($travel_benefits, $benefit);
                }
                array_push($travel_plan, $plan);
                array_push($travel_plan, $travel_benefits);
                array_push($plans_benefits, $travel_plan);
            }

            //Redirects to the next phase of the form
            $plans_benefits = view("B2C::travel.plans", compact('plans_benefits'))->render();

            return $plans_benefits;
        }

plan.blade.php, содержащий фазу 2 формы ивтягивается в основной макет многофазной формы

 <!-- PHASE 2-->
    @if (!empty($plans_benefits))
    @foreach ($plans_benefits as $plan_benefits)
          @php
            $plan_data = $plan_benefits[0];
            $benefits = $plan_benefits[1];
            // dd($benefits);
            $plan_name = $plan_data->Calculation_TravelPlan->TravelPlan->Name;
          @endphp   

    <div class="card plan">
        <h5 class="card-title plan">Essential</h5>
        <img class="card-img-top plan" src="images/superior.svg" alt="Card image cap">
        <div class="card-body">
          <div class="travel-plan">
      <div class="superior-content">
        <table class="table">
      <tbody>
        @foreach($benefits as $benefit)
            <tr>
                <td class="plan-title">{{$benefit->name}}</td>
                    @if($benefit->value == 'true')
                        <td class="plan-worth"><i class="fas fa-check"></i></td>
                    @elseif ($benefit->value == 'false')
                        <td class="plan-worth"><i class="fas"></i></td>
                    @else
                        <td class="plan-worth"> {{$benefit->value}} </td>
                    @endif
              </tr>
        @endforeach
      </tbody>
    </table>
      </div>
    </div>
    <!-- Hiden-->
        <input type="hidden" value="{{$plan_data->CalculationId}}"" class ="calc_id" name="calc_id" id="calc_id{{$plan_data->CalculationId}}"/>

        <input type="hidden" value="{{$plan_name}}" class ="travelplan" name="travelplan" id="plan{{$plan_data->CalculationId}}"/>
        <!--Hidden-->
      <p class="card-text plan">TOTAL
          <span class="amount">$  {{round($plan_data->TravelBasicPremium,2)}} 
                            </span>
                          </p>
          <a id ="{{$plan_data->CalculationId}}" class="plan-quote get_quote" style="cursor:pointer;"><span>Get Quote</span></a>
      </div>
    </div>

    @endforeach
    @endif
    <!-- END PHASE 2-->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...