如何将用户ID传递给模式?它正在将id提取到(x)按钮,但是当模式打开时,它仍然使用管理员ID。如何使其以模态形式转换为用户ID?我被卡住了,我知道它必须对jquery做些什么,但是不幸的是我不知道怎么做和做什么。谢谢。
视图
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
</div>
<div class="modal-body">
<h2>{{ $modal }}</h2>
</div>
<div class="modal-footer">
<button type="button" class="rem-mod btn btn-secondary" data-dismiss="modal">Zatvori</button>
{{ Form::open(['action'=> ['PagesController@destroy', Auth::user()->id],'method' => 'POST']) }}
{{ Form::submit('Obrišite račun', ['class' => 'bck-mod btn btn-danger']) }}
{{ Form::hidden('_method', 'DELETE') }}
{{ Form::close() }}
</div>
</div>
</div>
</div>
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">Pretraži korisnike</div>
<div class="panel-body">
<div class="form-group">
<input type="text" name="search" id="search" class="form-control" placeholder="Pretraži korisnike" />
</div>
<div class="table-responsive">
<h3 align="center">Broj korisnika: <span id="total_records"></span></h3>
<table id="users" class="table table-striped table-bordered">
<thead>
<tr>
<th>Prezime</th>
<th>Ime</th>
<th>Telefon</th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
fetch_user_data();
function fetch_user_data(query = ''){
$.ajax({
url:"{{ route('live_search.action') }}",
method:'GET',
data:{query:query},
dataType:'json',
success:function(data)
{
$('tbody').html(data.table_data);
$('#total_records').text(data.total_data);
}
})
}
//
$(document).on('keyup', '#search', function(){
var query = $(this).val();
fetch_user_data(query);
});
$('#users').on('click', '.remove-button', function(){
var id=$(this).data('id');
$("#deleteModal").modal("show");
console.log(id);
});
$(document).on('click', '.rem-mod', function(){
var id = $(this).data('id');
{
$.ajax({
url:"{{route('live_search.destroy')}}",
method:"delete",
data:{query:query},
success:function(data)
{
alert(data);
$('#users').DataTable().ajax.reload();
}
})
}
});
});
</script>
控制器
public function destroy($id){
return $id;
$user = Auth::user();
if ($user->IsAdmin()){
if($users->delete($id)){
return redirect()->back();
}
}else{
if ($user->delete()) {
Auth::logout();
$data = array(
'title' => 'Dobrodošli,',
'title2' => 'da biste nastavili, ulogirajte se!',
);
return view('pages.index')->with($data);
}
}
}
public function action(Request $request)
{
if($request->ajax()){
$output = '';
$query = $request->get('query');
if($query != ''){
$data = DB::table('users')
->where('surname', 'like', '%'.$query.'%')
->orWhere('name', 'like', '%'.$query.'%')
->orWhere('phone', 'like', '%'.$query.'%')
->orderBy('id')
->get();
}else {
$data = DB::table('users')
->orderBy('id')
->get();
}
$total_row = $data->count();
if($total_row > 0){
foreach($data as $row){
$output .= '
<tr>
<td>'.$row->surname.'</td>
<td>'.$row->name.'</td>
<td>'.$row->phone.'</td>
<td><button type="button" class="remove-button btn btn-danger" data-id="'.$row->id.'">
<div class="close">x</div>
</button></td>
</tr>
';
}
}else{
$output = '
<tr>
<td align="center" colspan="5">Nema podataka</td>
</tr>
';
}
$data = array(
'table_data' => $output,
'total_data' => $total_row,
);
echo json_encode($data);
}
}
编辑- 找出问题所在。首先,它不是从数据库中提取用户ID,其次是没有将该ID推送到模式。这是我的github,以备您需要使用更宽广的图片-https://github.com/sucoms/multiauthzadatak
答案 0 :(得分:0)
这是因为每次打开模态时,模态都有相同的ID。 ID应该是唯一的。
尝试:
<div class="modal fade" id="deleteModal{{$id}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
在打开模式时,这对于每个ID都是唯一的。您还需要在打开模式的地方更改代码以反映这一点。
编辑:查看HTML文档https://www.w3.org/TR/html401/struct/global.html#h-7.5.2
中的唯一ID它当前对您不起作用的原因是因为每次打开模式时都引用相同的ID。如果您在模式ID(即{{ $id }}
)中使用Laravel变量,则每次打开模式时,该变量都将特定于该ID。
答案 1 :(得分:0)
您可以通过在点击删除时在模式上设置ID来解决此问题:
$('#users').on('click', '.remove-button', function(){
var id=$(this).data('id');
$("#deleteModal").data('id', id).modal("show");
console.log(id);
});
$(document).on('click', '.rem-mod', function(){
var id = $(this).closest('.modal').data('id');
{
$.ajax({
url:"{{route('live_search.destroy')}}",
method:"delete",
data:{id:id},
success:function(data)
{
alert(data);
$('#users').DataTable().ajax.reload();
}
})
}
});