我正在尝试删除一条记录。一切似乎都很好,但是我不能删除我想要的记录,只能删除第一个。
该视图的代码为:
<table class="table">
<thead class="thead-light">
<tr>
<th>ID</th>
<th>Inscrito en</th>
<th>Cambios</th>
</tr>
</thead>
<tbody>
@if (!empty($escuelausuarios))
@foreach($escuelausuarios as $escuelausuario)
<tr>
<td> {{ $escuelausuario->idEscuelaUsuario }} </td>
<td> {{ $escuelausuario->escuela->strNombreEscuela }} </td>
<td>
<button class="btn btn-sm btn-outline-secondary" id="delete{{ $escuelausuario->idEscuelaUsuario }}"
onclick="
var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
if (resultdelete)
{
event.preventDefault();
document.getElementById('delete-horario-form').submit();
}
"
>-</button>
<form id="delete-horario-form" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}"
method="POST" style="display: none;">
<input type="hidden" name="_method" value="delete">
{{ csrf_field() }}
</form>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
控制者总是获得相同的ID,因此,我删除的记录总是相同的,第一个。
public function destroy($idEscuelaUsuario)
{
//
dd($idEscuelaUsuario);
$escuelaUsuario = EscuelaUsuario::find($idEscuelaUsuario);
//dd($escuelaUsuario);
if($escuelaUsuario->delete())
{
return back()->withInput()->with('success','Escuela desvinculada del usuario exitosamente');
//return redirect()->route('usuarios.index')->with('success','Escuela desvinculada del usuario exitosamente');
}
return back()->withInput()->with('error','La escuela no pudo desvuncularse');
}
在另一篇文章中,我有一个相似的问题,但是,这是一个编辑视图,问题是值从未到达模态窗口,因此我更改了每一行的ID名称,并且一切正常。在这种情况下,我只需要发送该行的ID,但始终相同,即查询的第一个。
请帮助,我不知道发生了什么。
谢谢。
答案 0 :(得分:1)
如果在foreach循环中使用ID属性,请确保每行具有不同的ID
如果您使用document.getElementByID
,它将始终搜索该ID
的首次出现
<button class="btn btn-sm btn-outline-secondary" id="delete{{ $escuelausuario->idEscuelaUsuario }}" onclick="
var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
if (resultdelete)
{
event.preventDefault();
document.getElementById('delete-horario-form{{ $escuelausuario->idEscuelaUsuario }}').submit();
}
">-</button>
<form id="delete-horario-form{{ $escuelausuario->idEscuelaUsuario }}" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}" method="POST" style="display: none;">
<input type="hidden" name="_method" value="delete">
{{ csrf_field() }}
</form>
答案 1 :(得分:0)
问题:
所有隐藏的表单都具有相同的ID("delete-horario-form"
)。单击删除按钮后,它将提交以"delete-horario-form"
作为ID的表单。但是在您的代码中,所有ID均相同,因此它将仅提交第一个ID。
解决方案:
您已将按钮ID设为动态id="delete{{ $escuelausuario->idEscuelaUsuario }}"
,这不是必需的。按钮ID在这里没有任何区别,但表单ID却有区别。通过使表单id像按钮一样动态,它将解决您的问题。
<table class="table">
<thead class="thead-light">
<tr>
<th>ID</th>
<th>Inscrito en</th>
<th>Cambios</th>
</tr>
</thead>
<tbody>
@if (!empty($escuelausuarios))
@foreach($escuelausuarios as $escuelausuario)
<tr>
<td> {{ $escuelausuario->idEscuelaUsuario }} </td>
<td> {{ $escuelausuario->escuela->strNombreEscuela }} </td>
<td>
<button class="btn btn-sm btn-outline-secondary"
onclick="var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
if (resultdelete)
{
event.preventDefault();
document.getElementById("delete{{ $escuelausuario->idEscuelaUsuario }}").submit();
}"
>-</button>
<form id="delete{{ $escuelausuario->idEscuelaUsuario }}" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}"
method="POST" style="display: none;">
<input type="hidden" name="_method" value="delete">
{{ csrf_field() }}
</form>
</td>
</tr>
@endforeach
@endif
</tbody>
</table>