我正在尝试更新票证(SET Deleted = TRUE因为我还必须显示已删除的票证)。为此,我POST在表单上使用带有票证 ID 的方法,但是当表单提交时,票证 ID 更改为最新的票证 ID。当我检查时,我在操作中看到了确切的票证 ID,但在提交时,它会发生变化。我也尝试向它传递一个隐藏的输入,但不幸的是它也被更改为最新的票证。刀刃<tbody>@foreach ($Tickets as $Ticket) <tr> <td>{{$loop->iteration}}</td> <td>{{$Ticket->Customer->Name}}</td> <td>$ {{$Ticket->Paid}}</td> <td>$ {{$Ticket->TDisc}}</td> <td>{{$Ticket->Tax}}</td> <td>{{ date("d M Y", strtotime($Ticket->Date))}}</td> <td class="text-right"> <a href="/Ticket/{{$Ticket->ID}}">EDIT</a> <a href="" onclick="event.preventDefault(); document.getElementById('Delete').submit();">DELETE</a> <form id="Delete" action="Ticket/{{$Ticket->ID}}" method="POST" style="display: one;"> <input type="hidden" name="ID" value="{{{{$Ticket->ID}}}}" @csrf </form> </td> </tr>@endforeach</tbody>控制器public function destroy(Request $request, $id) { dd($id); Ticket::where('ID', $id)->update(['Deleted' => TRUE]); return redirect()->back()->with('success', 'Ticket has been Deleted');}请帮我弄清楚我错过了什么。任何帮助都会很有价值。
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
它不起作用的原因是您的代码将始终针对第一个实例,因为id每个表单的 完全相同。
您不应该id多次为任何元素设置相同的值。
更好的方法是像下面这样,它将提交正确的表单(包含<a>标签的表单)。您还缺少 method 字段来告诉 laravel 这是一个删除请求。
<form action="Ticket/{{$Ticket->ID}}" method="POST">
<input type="hidden" name="ID" value="{{$Ticket->ID}}">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<a href="" onclick="event.preventDefault(); this.parentNode.submit();">
DELETE
</a>
</form>
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消