Я хочу использовать ту же форму для хранения / обновления в Laravel - PullRequest
0 голосов
/ 02 апреля 2020

Я бы хотел поделиться этой же формой для хранения / обновления данных в форме Laravel AJAX. Поэтому я бы изменил метод формы в зависимости от действия, которое пользователь хочет сделать. т.е. метод хранения:

<form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
    @csrf

метод обновления:

<form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
    @csrf @method('PUT');

У меня есть индексная страница, куда я добавляю форму, которую я открываю через Ajax

{{-- Form include  --}}
<div class="col-9" id="scheda" style="display:none">
  <form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
    @csrf
  @include('technician.form')
</div>

Есть идеи, как мне решить эту проблему?

Спасибо

Валерио

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

В индексном файле у меня есть список техников, которые я показываю таким образом

@foreach ($technicians as $technician)
              <li><i class="fa-li fa fa-square text-muted"></i><a href="#" onclick="event.preventDefault();tecShow({{ $technician->id }})"><small class="text-muted"># {{$technician->id}}</small>  {{$technician->nome}} {{$technician->cognome}}</a></li>
        @endforeach

У меня также есть кнопка для создания нового te c

<a onclick="event.preventDefault();openTecForm()" href="" class="btn btn-outline-muted btn-sm text-secondary">

И скрытый div для отображения формы

<div class="col-9" id="scheda" style="display:none">
  <form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
    @csrf
  @include('technician.form')
</div>

Внутри моего js файла у меня есть несколько функций:

openForm () -> сброс поля , установите кнопки и покажите скрытый div

tecAdd () -> выполните вызов ajax, сохраните содержимое и добавьте результат в ul в индексном файле

tecShow (id) -> заполнить данные формы, поступающие из базы

tecEdit (id) -> все еще работает над этим, но он должен обновить запись

0 голосов
/ 02 апреля 2020

Вы можете включить идентификатор записи, которую хотите обновить, и проверить, есть ли она в вашем контроллере. Если нет, вы можете создать новую запись.

ОБНОВЛЕНО

<div class="col-9" id="scheda" style="display:none">
      <form method="post" action="{{action('TechnicianController@store')}}" id="formTec">
          @csrf
          // only on update form
          <input type="hidden" name="technician_id" value="{{ $technician->id }}">
          @include('technician.form')
      </form>
</div>

Затем в вашем контроллере:

if ($request->input('technician_id'))
{
    // Update code
} else {
    // Create new code
}

ОБНОВЛЕНИЕ 2

Это то, о чем я думал: https://codepen.io/205media/pen/abOxXzB

Просто для добавления скрытого ввода для идентификатора техника при обновлении, а не при создании нового запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...