如何在laravel中以模态运行控制器函数

时间:2018-03-06 07:40:52

标签: php laravel controller modal-dialog laravel-5.3

我试图做的是在一个模态中运行一个控制器删除函数,它在循环结束时当我尝试使用该删除函数时,它获取最后一个id并删除它,我希望它得到调用函数的当前id。我该怎么办?我不能把模型的代码放在CSS文件中导致它扰乱其他样式,所以脚本代码应该在刀片视图中

@section('content')
@if($promotions)
    <section class="content">
        <div class="row">
            <div class="box overflowhidden">
                <div class="box-body datatablelist">
   <table id="example1" class="table table-bordered table-striped">
                        <thead>
                        <tr>
                            <th>Sr No</th>
                        </tr>
                        </thead>
                        <tbody>
                        @foreach ($promotions as $promotion)
                            <tr>
                                <td>
                                    @if(!empty($promotion->id))
                                        {{$promotion->id}}
                                    @else
                                        N/A
                                    @endif
                                </td>
                                <td>
                                    <div class="btn-group">
                                        <button type="button" class="btn btn-default dropdown-toggle"
                                                data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                            Action <span class="caret"></span>
                                        </button>
                                        <ul class="dropdown-menu">

                                            <li>
     <a href="#" class="myBtn" id="myBtn"onclick="showDeleteModal(this.id)">
       <i class="fa fa-trash-o"   aria-hidden="true"></i> Delete
                                                </a>
                                            </li>
                                          </ul>
                                    </div>


                                </td>
                            </tr>
                        @endforeach
                    </table>
                </div>
                <!-- /.box-body -->
            </div>


            <!-- /.box -->
        </div>
        <!-- /.col -->
        </div>
        <!-- /.row -->
    </section>
    <!-- /.content -->

    <!-- page script -->
    <div id="myModal" class="modal fade">
        <!-- Modal content -->
        <div class="modal-content">
            <span data-dismiss="modal" class="close">&times;</span>
            <p>Are you sure you wants to delete the promotion</p>
   {!! Form::open(['method'=>'DELETE','action'=>
    ['PromotionController@destroy',$promotion->id]]) !!}
            <div class="form-group">
  {{ Form::button('<i class="fa fa-trash-o"> Delete</i>', ['type' => 
    'submit', 'class' => 'btn btn-danger pull-right btn-
   sm','style'=>'margin-bottom:1em'] )  }}
                {!! Form::close() !!}
            </div>
        </div>

    </div>
@endif

这是脚本代码

<div id="myModal" class="modal fade">
        <!-- Modal content -->
        <div class="modal-content">
            <span data-dismiss="modal" class="close">&times;</span>
            <p>Are you sure you wants to delete the promotion</p>
            {!! Form::open(['method'=>'DELETE','action'=>
     ['PromotionController@destroy',$promotion->id]]) !!}
            <div class="form-group">
     {{ Form::button('<i class="fa fa-trash-o"> Delete</i>', ['type' => 
   'submit', 'class' => 'btn btn-danger pull-right btn-sm','style'=>'margin-
   bottom:1em'] )  }}
                {!! Form::close() !!}
            </div>
        </div>

    </div>
@endif
    <script>

        $(document).ready(function () {
           $('#example1').DataTable({

                "ordering": false,

            });
        });

    </script>
<script>
    function showDeleteModal(id){
        $("#myModal").modal("show");


    }
</script>

这是控制器功能

public function destroy($id)
    {
        $promotion = Promotion::findOrFail($id);
        $promotion->delete($id);
        return redirect('admin/promotion');

    }

1 个答案:

答案 0 :(得分:1)

$promotion->id结束后您在模式中使用foreach,这就是为什么它始终存储last ID并且您在form action中使用它的原因使它充满活力。您可以使用Jquery执行此操作。此外,showDeleteModal(this.id)也有错误

您需要更新showDeleteModal(this.id)功能

function showDeleteModal(id){
   var form = $("#myModal").find('form');
   var url = form.attr('action');
   url = url.split('/');
   url[url.length - 1] = id;
   url = url.join('/'); 
   form.attr('action',url);
   $("#myModal").modal("show"); 
}

并且

<a href="#" class="myBtn" id="myBtn"onclick="showDeleteModal(this.id)">

<a href="#" class="myBtn" id="myBtn"onclick="showDeleteModal({{$promotion->id}})">