У меня есть простая система crud, которую я создаю, все отлично работает, кроме части ОБНОВЛЕНИЕ.
Когда вы пытаетесь отредактировать запись, появляется модал начальной загрузки с формой, в которой записи заполнены с помощью javascript. URL действия для формы также устанавливается javascript. Когда я отправляю, модель просто закрывается, ничего не происходит.
Давайте начнем с маршрута моего ресурса:
Route::resource('buildingimage', 'BuildingImageController');
Кнопка редактирования:
<button
class="edit-modal btn btn-info"
data-buildingid="{{$building->id}}"
data-location="{{$building->location}}"
data-source="{{$building->source}}"
data-disc="{{$building->disc}}"
data-result="{{$building->result}}"
data-resultPositive="{{$building->result_info_positive}}"
data-resultNegative="{{$building->result_info_negative}}"
data-toggle="modal"
data-target="#edit-building"
>
<i class="far fa-edit"></i>
Edit
</button>
Я использую все эти атрибуты данных для заполнения формы редактирования через javascript:
$('#edit-building').on('show.bs.modal', function(e) {
let editUrl = 'buildingimage/' + $(e.relatedTarget).data('buildingid');
$('#editBuilding').attr('action', editUrl);
let location = $(e.relatedTarget).data('location');
let source = $(e.relatedTarget).data('source');
let disc = $(e.relatedTarget).data('disc');
let result = $(e.relatedTarget).data('result');
let resultPostitive = $(e.relatedTarget).data('resultPostive');
let resultNegative = $(e.relatedTarget).data('resultNegative');
$('input[name=location]').val(location);
$('input[name=source]').val(source);
$('select[name=disc]').val(disc);
$('select[name=result]').val(result);
});
Форма в моем модале:
{{ Form::open(['id' => 'editBuilding', 'method' => 'PUT']) }}
<div class="form-group">
<div class="row">
<div class="col-md-3 ">
{{ Form::label('location', Lang::get('image_request.execute.building.location')) }}
{{ Form::text('location', null, array('class' => 'form-control')) }}
</div>
<div class="col-md-2 noPaddingLeft">
{{ Form::label('source', Lang::get('image_request.execute.building.source')) }}
</div>
<div class="col-md-2 noPaddingLeft">
{{ Form::label('disc', Lang::get('image_request.execute.building.disc')) }}
{{ Form::select('disc', ['0' => Lang::get('image_request.execute.building.notdisc'), '1' => Lang::get('image_request.execute.building.disc')], null, ['id' => 'discDropdown', 'class' => 'form-control'])}}
</div>
<div class="col-md-2 noPaddingLeft">
{{ Form::label('result', Lang::get('image_request.execute.building.result')) }}
{{ Form::select('result', ['positive' => Lang::get('image_request.execute.building.positive'), 'negative' => Lang::get('image_request.execute.building.negative')], null, ['id' => 'resultDropdown', 'class' => 'form-control'])}}
</div>
<div class="col-md-2 noPaddingLeft">
<div id="resultPositive">
{{ Form::label('resultpostitive', Lang::get('image_request.execute.building.resultpositive')) }}
{{ Form::select('result_info_positive', ['positive' => Lang::get('image_request.execute.building.positive'), 'negative' => Lang::get('image_request.execute.building.negative')], null, ['id' => 'resultPositiveDropdown', 'class' => 'form-control'])}}
</div>
<div id="resultNegative">
{{ Form::label('resultnegative', Lang::get('image_request.execute.building.resultnegative')) }}
{{ Form::select('result_info_negative', ['positive' => Lang::get('image_request.execute.building.positive'), 'negative' => Lang::get('image_request.execute.building.negative')], null, ['id' => 'resultNegativeDropdown', 'class' => 'form-control'])}}
</div>
</div>
<div class="col-md-1 noPaddingLeft">
<br>
{!! Form::hidden('image_request_id', $imageRequest->id) !!}
</div>
</div>
</div>
{{ Form::close() }}
Теперь я понятия не имею, почему форма не отправляется, буквально ничего не происходит, модал просто закрывается.
РЕДАКТИРОВАТЬ кнопку отправки в модальном
Я забыл показать, как я отправляю форму в модале:
<button type="submit" form="editBuilding" class="btn btn-primary edit" data-dismiss="modal">
<span class='glyphicon glyphicon-check'></span> @lang('image_request.execute.building.edit_modal.confirm')
</button>