Laravel Modal 不断删除数据库中的最后一个 id

Kay*_*aye 1 php laravel-5

您好,我正在尝试在我的用户表中使用 Laravel 中的模式进行删除确认。我注意到删除按钮正在工作,但删除按钮总是删除表中的最后一个条目,并且在确认中我放置了一些,<p>Are you sure you want to delete {{$row->name}}</p> 但那里的名称始终来自最后一个条目。这是我的整个模态代码

<!-- Delete Modal -->
  <div class="modal fade" id="userDelete"  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">Delete User</h5>
        </div>
        <div class="modal-body">
          <p>Are you sure you want to delete {{$row->name}}</p> 
        </div>
        <div class="modal-footer">
         {!!Form::open(['action' => ['UserController@destroy', $row->id], 'method' => 'POST','class'=>'pull-right'])!!}
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          {{Form::submit('Delete',['class'=>'btn btn-danger'])}}
          {{Form::hidden('_method','DELETE')}}
          {!!Form::close()!!}
        </div>
      </div>
    </div>
  </div>
Run Code Online (Sandbox Code Playgroud)

这是我的销毁控制器代码

public function destroy($id)
    {
        $users = User::find($id);
        if(auth()->user()->userType =="admin")
        {   
           
            $users->delete();
        }
        else
        {
        return redirect('/users')->with('error', 'Admin is only authorized to delete users');
        }
        
        return redirect('/users')->with('success', 'User Removed!');
    }
Run Code Online (Sandbox Code Playgroud)

这是我的表体代码

@foreach ($users as $row)
     <tbody id="myTable">
         <tr>
             <td>{{$row->id}}</td>
             <td>{{$row->name}}</td>
             <td>{{$row->email}}</td>
             <td>{{$row->created_at}}</td>
             <td>{{$row->userType}}</td>
             <td><a href="" class="btn btn-success">Validate</a>
            <button class="btn btn-danger" data-toggle="modal" data- 
            target="#userDelete">Delete</button>
            </td>
         </tr>
    </tbody>
@endforeach
Run Code Online (Sandbox Code Playgroud)

我该如何修复它?

Naz*_*mud 5

你的模态总是排在最后,id因为,

  • 每次单击按钮时,它总是检测相同的模态,该模态采用最后一行 id。
  • 您需要为每个数据定义单独的模式,就像为每个数据条目在表中定义单独的行一样。
  • 然后在每个按钮点击时,检测对应的模态进行删除。

重新格式化您的代码,如下所示。

在表体代码中:更新按钮数据目标

@foreach ($users as $row)
     <tbody id="myTable">
         <tr>
             <td>{{$row->id}}</td>
             ...
             <td><a href="" class="btn btn-success">Validate</a>
                <button class="btn btn-danger" data-toggle="modal" 
                      data-target="#userDelete_{{$row->id}}">
                         Delete
                </button>
            </td>
         </tr>
    </tbody>
@endforeach
Run Code Online (Sandbox Code Playgroud)

上面的, 现在将根据按钮点击 data-target="#userDelete_{{$row->id}}"识别不同的模态 id,例如userDelete_1,等userDelete_2

foreach现在在表格后面的循环内编写模态代码,如下所示:

@foreach ($users as $row)
     <tbody id="myTable>
        ...
    </tbody>

<!-- Delete Modal -->
  <div class="modal fade" id="userDelete_{{$row->id}}"  tabindex="-1"
       arialabelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel">Delete User</h5>
        </div>
        <div class="modal-body">
          <p>Are you sure you want to delete {{$row->name}}</p> 
        </div>
        <div class="modal-footer">
         {!!Form::open(['action' => ['UserController@destroy', $row->id], 'method' => 'POST','class'=>'pull-right'])!!}
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          {{Form::submit('Delete',['class'=>'btn btn-danger'])}}
          {{Form::hidden('_method','DELETE')}}
          {!!Form::close()!!}
        </div>
      </div>
    </div>
  </div>
@endforeach
Run Code Online (Sandbox Code Playgroud)

现在,如果你的路线路径和形式没问题,我想你的问题就会解决。