获取 table laravel 中选定行的 ID

getting id of selected row in table laravel

所以我正在尝试使用 laravel 集合进行 CRUD,我的问题是如何获取 selected 行的 ID 以便对其进行编辑。

看起来如果我 select 我想在我的 table 中编辑某个列,它得到的 id 是最后一行的 id 而不是 select编辑行。

这是我的看法。

<table class="table">
                <thead>
                  <tr>
                    <th scope="col">id</th>
                    <th scope="col">First</th>
                    <th scope="col">Last</th>
                    <th scope="col">Course</th>
                    <th scope="col"></th>
                    <th scope="col"></th>
                  </tr>
                </thead>
                <tbody>
                    @foreach ($cruds as $crud)
                        <tr>
                            <th scope="row">{{$crud->id}}</th>
                            <td>{{$crud->firstName}}</td>
                            <td>{{$crud->lastName}}</td>
                            <td>{{$crud->course}}</td>
               
                            <td><button class= "btn btn-warning" data-toggle="modal" data-target="#editModal"> Edit </button></td>
                            <td><button class= "btn btn-danger" data-toggle="modal" data-target="#deleteModal"> Delete </button></td>
                        </tr>
                    @endforeach
                </tbody>
              </table>

这是我的模态

{{-- <-- Edit Modal --> --}}
  <div class="modal fade" id="editModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel">EDIT DATA</h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
        </div>
        
        <div class="modal-body"> 
            
            {!! Form::open(['action' => ['CrudController@update', $crud->id], 'method' => 'POST'])!!}
            <div class="form-group">
                {{Form::label('firstName','First Name')}}
                {{Form::text('firstName',$crud->firstName,['class' => 'form-control'])}}
            </div>

            <div class="form-group">
                {{Form::label('lastName','Last Name')}}
                {{Form::text('lastName',$crud->lastName,['class' => 'form-control'])}}
            </div>

            <div class="form-group">
                {{Form::label('course','Course')}}
                {{Form::text('course',$crud->course,['class' => 'form-control'])}}
            </div>
            <div class="modal-footer">
            {{Form::hidden('_method', 'PUT')}}
            {{Form::submit('Update', ['class' => 'btn btn-primary'])}}
            </div>
        {!! Form::close() !!}
        </div>
      </div>
    </div>
  </div>

这是我的控制器

public function update(Request $request, $id)
    {
        //
        $this->validate($request, [
            'firstName' =>'required',
            'lastName' => 'required',
            'course' => 'required'
        ]); 

        //Adding Data
        $crud = Crud::find($id); 
        $crud->firstName = $request->input('firstName');
        $crud->lastName = $request->input('lastName');
        $crud->course = $request->input('course');
        $crud->save();

        return redirect('/crud');
    }

试试这个

     <script>
       $(document).on('click', '.edit-modal', function() {
        $('#id').val($(this).data('id'));
        $('#firstName').val($(this).data('firstName'));
        $('#lastName').val($(this).data('lastName'));
        $('#course').val($(this).data('course'));
        $('#ModalEditForm').modal('show');
     });
    </script>

并给每个输入一个ID,并将记录的ID作为隐藏输入发送 从路由和控制器方法中删除 id 并将 id 作为隐藏输入发送

我建议你这样做:

在列表中:

@foreach ($cruds as $crud)
    <tr>
        <th scope="row">{{ $crud->id }}</th>
        <td>{{ $crud->firstName }}</td>
        <td>{{ $crud->lastName }}</td>
        <td>{{ $crud->course }}</td>

        <td><button class= "btn btn-warning edit-modal" data-id="{{ $crud->id }}"> Edit </button></td>
        <td><button class= "btn btn-danger" data-toggle="modal" data-target="#deleteModal"> Delete </button></td>
    </tr>
@endforeach

模态:

{{-- <-- Edit Modal --> --}}
<div class="modal fade" id="editModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">EDIT DATA</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      
      <div class="modal-body"></div>
    </div>
  </div>
</div>

JS:

$(document).on('click', '.edit-modal', function() {
    let id = $(this).data('id');
    $.get('/your/api/getById/'+id, function(data){
        $('#editModal .modal-body').html(data);
    });
});

模态内部 window 等 modal_edit.blade.php

{!! Form::open(['action' => ['CrudController@update', $crud->id], 'method' => 'POST'])!!}
  <div class="form-group">
      {{Form::label('firstName','First Name')}}
      {{Form::text('firstName',$crud->firstName,['class' => 'form-control'])}}
  </div>

  <div class="form-group">
      {{Form::label('lastName','Last Name')}}
      {{Form::text('lastName',$crud->lastName,['class' => 'form-control'])}}
  </div>

  <div class="form-group">
      {{Form::label('course','Course')}}
      {{Form::text('course',$crud->course,['class' => 'form-control'])}}
  </div>
  <div class="modal-footer">
  {{Form::hidden('_method', 'PUT')}}
  {{Form::submit('Update', ['class' => 'btn btn-primary'])}}
  </div>
{!! Form::close() !!}

控制器:

public function getById(YourModel $crud){
    return view('modal_edit.blade.php', compact('crud'))->render();
}

如有不明之处,请联系。我很乐意提供帮助