如何将用户ID传递给模式?

时间:2018-10-30 11:30:12

标签: javascript php jquery laravel bootstrap-modal

如何将用户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">&#120;</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

2 个答案:

答案 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();
                }
            })
        }
    });