I have been trying to use modal to create and edit entries in Laravel. I am using simple modal instead of ajax. I can add entries, but when I try to edit an entry, it only loads the last entry in the modal.
Here is my index (from where I am calling modal)
@foreach ($clients as $client)
<tr>
<td>{{ $client->name }}</td>
<td><button data-target="modal2" class="btn modal-trigger1"><a href="{{route('client.edit', $client->id)}}">Edit</a></button></td>
</tr>
@endforeach
Here is edit file (modal file)
<div id="modal2" class="modal">
<div class="panel panel-default">
<div class="modal-content">
<p class="flow-text">Edit client</p>
<form class="form" role="form" method="POST" action="{{ url('/client/'. $client->id) }}">
<input type="hidden" name="_method" value="patch">
{!! csrf_field() !!}
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
<label class="control-label">Name</label>
<input type="text" class="form-control" name="name" value="{{ $client->name }}">
@if ($errors->has('name'))
<span class="help-block">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
</form>
</div>
</div>
</div>
And the edit in controller is
public function edit($id)
{
$clients = Client::findOrFail($id);
return view('client.edit', compact('clients'));
}
It only loading the last entry in the table, not the entry id in the row.
I am using Laravel 5.3. Please help
Set data to your edit link
@foreach ($clients as $client)
<tr>
<td>{{ $client->name }}</td>
<td><a href="#" class="edit-client-link" data-client-id="{{$client->id}}" data-client-name="{{$client->name}}">Edit</a></td>
</tr>
@endforeach
//On edit button click get data and set data to modal
$(document).on('click', '.edit-city-link', function(){
var client_id = $(this).data('client-id');
var client_name = $(this).data('client-name');
$('#client-id').val(client_id);
$('#client-name').val(client_name);
$('#edit-client-modal').modal('show');
});
//This is modal
<div id="modal2" class="modal">
<div class="panel panel-default">
<div class="modal-content">
<p class="flow-text">Edit client</p>
<form id="edit-client-modal" class="form" role="form" method="POST" action="{{ url('/client/edit') }}">
<input type="hidden" name="_method" value="patch">
{!! csrf_field() !!}
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
<label class="control-label">Name</label>
<input id="client-id" type="hidden" class="form-control" name="client-id">
<input id="client-name" type="text" class="form-control" name="name">
@if ($errors->has('name'))
<span class="help-block">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
</form>
</div>
</div>
</div>
This is your controller method
public function edit($request_data)
{
$obj_client = Client ::find($request_data['client-id']);
$obj_client = $request_data['client-name'];
$obj_client->save();
}