Laravel - Показать / Скрыть поля в зависимости от выбранного входа - PullRequest
0 голосов
/ 16 марта 2020

В настоящее время у меня есть форма, которую пользователи могут заполнить, чтобы добавить элемент в свой маршрут поездки. Однако я хочу улучшить эту форму.

В идеале я хотел бы, чтобы форма менялась / обновлялась в зависимости от того, какую категорию выбирает пользователь. Например, если пользователь выбирает категорию «Транспорт» , приведенные ниже поля должны обновиться, чтобы отобразить

«Время отправления»

«Время прибытия»

' Аэропорт вылета '

' Аэропорт прибытия '

Если пользователь выбирает ' Проживание ' из раскрывающейся категории, форма должна обновиться, чтобы показать -

«Дата заезда»

«Дата отъезда»

«Время заезда»

«Адрес»

«Примечания»

Я понимаю, что мне нужно будет обновить таблицу базы данных, чтобы не все поля были обязательными, однако некоторые поля ввода будут перекрываться, например. название, примечания и т. д. c

Однако я не уверен, что мне нужно изменить в моем блейд-файле, показывая форму ..

dynamic form

addEvent.blade. php

  <div class="form-group">
    @if (Session::has('sucess'))
      <div class="alert alert-sucess">{{ Session::get('sucess') }}</div>
    @elseif (Session::has('warning'))
      <div class="alert alert-danger">{{ Session::get('warning') }}</div>
      @endif
    </div>

    <input value="{{ $trip_id }}" name="trip_id" hidden="true"/>

<div class="form-group">
    <div class="form-group">
      <div class="form-group">
        {!! Form::Label('category_id', 'Category:') !!}
        <select class="form-control" name="category_id">
          @foreach($categories as $category)
            <option value='{{ $category->id}}'> {{ $category->category}}</option>
          @endforeach
         </select>
      </div>
    </div>
  </div>

<div class="form-group">
  <div class="form-group">
    {!! Form::label('colour', 'Select Colour:') !!}
    <div class="">
      {!! Form::color('colour', null, ['class' => 'form-control']) !!}
      {!! $errors->first('colour', '<p class="alert alert-danger">:message</p>') !!}
  </div>
</div>

<div class="form-group">
  <div class="form-group">
    {!! Form::label('event_name', 'Title:') !!}
    <div class="">
      {!! Form::text('event_name', null, ['class' => 'form-control']) !!}
      {!! $errors->first('event_name', '<p class="alert alert-danger">:message</p>') !!}
    </div>
  </div>
</div>

<div class="form-group">
  <div class="form-group">
    {!! Form::label('start_date', 'Start Date:') !!}
    <div class="">
      {!! Form::date('start_date', null, ['class' => 'form-control']) !!}
      {!! $errors->first('start_date', '<p class="alert alert-danger">:message</p>') !!}
    </div>
  </div>
</div>


<div class="form-group">
  <div class="form-group">
    {!! Form::label('end_date', 'End Date:') !!}
    <div class="">
      {!! Form::date('end_date', null, ['class' => 'form-control']) !!}
      {!! $errors->first('end_date', '<p class="alert alert-danger">:message</p>') !!}
    </div>
  </div>
</div>

<div class="form-group">
  <div class="form-group">
    {!! Form::label('time', 'Time:') !!}
    <div class="">
      {!! Form::time('time', null, ['class' => 'form-control']) !!}
      {!! $errors->first('time', '<p class="alert alert-danger">:message</p>') !!}
    </div>
  </div>
</div>

<div class="form-group">
  <div class="form-group">
    {!! Form::label('address', 'Address:') !!}
    <div class="">
      {!! Form::text('address', null, ['class' => 'form-control']) !!}
      {!! $errors->first('address', '<p class="alert alert-danger">:message</p>') !!}
    </div>
  </div>
</div>

<div class="form-group">
  <div class="form-group">
    {!! Form::label('notes', 'Notes:') !!}
    <div class="">
      {!! Form::textarea('notes', null, ['id' => 'notes', 'rows' => 4, 'cols' => 147, 'style' => 'resize:none']) !!}
      {!! $errors->first('notes', '<p class="alert alert-danger">:message</p>') !!}
    </div>
  </div>
</div>

<div class="form-group" &nbsp;<br/>
{!! Form::submit('Add', ['class' => 'btn btn-success']) !!}

EventController. php

public function addEvent(Request $request)
{
  $this->validate($request, [
    'event_name'  => 'required',
    'start_date'  => 'required|date',
    'end_date'    => 'required|date|after:start_date',
    'time'        => 'required',
    'trip_id'     => 'required',
    'address'     => 'required',

  ]);

    $start_date = Carbon::parse($request['start_date'])->format('Y-m-d');
    $end_date = Carbon::parse($request['end_date'])->format('Y-m-d');

    $tripCheck = Trip::where('id', $request['trip_id'])
    ->whereDate('startdate', '<=', $start_date)
    ->whereDate('enddate', '>=', $start_date)

    ->whereDate('startdate', '<=', $end_date)
    ->whereDate('enddate', '>=', $end_date)
    ->first();

    if ($tripCheck) {

      $events = new Events;
      $trips = Trip::all();
      $categories = Categories::pluck('category','id');
      $events->category_id = $request['category_id'];
      $events->colour =  $request['colour'];
      $events->event_name = $request['event_name'];
      $events->start_date = $request['start_date'];
      $events->end_date = $request['end_date'];
      $events->time = $request['time'];
      $events->address = $request['address'];
      $events->notes = $request['notes'];
      $events->trip_id = $request['trip_id'];
      $events->save();

//return redirect('trips')->with('success', 'The new event has been added to your trip')->with('trips', $trips)->withCategories($categories);
return redirect('trips/'.$request->input('trip_id').'/edit')->with('success', 'The new event has been added to your trip')->with('trips', $trips)->withCategories($categories);
} else
  {
  return redirect('trips')->withErrors(['The dates you added are not within Trip start and end date.']);
   }

}

...