Php foreach laravel始终放置最新的迭代对象';post表单中的s属性作为路由的参数
我想在用户点击帖子的删除按钮时将每个帖子的id发送到服务器,但在下面的代码中,当用户点击删除按钮时,最新帖子的id总是发送到后端,如何解决Php foreach laravel始终放置最新的迭代对象';post表单中的s属性作为路由的参数,php,laravel,Php,Laravel,我想在用户点击帖子的删除按钮时将每个帖子的id发送到服务器,但在下面的代码中,当用户点击删除按钮时,最新帖子的id总是发送到后端,如何解决 @foreach($allPosts as $key => $posts) . . . <td class="filterable-cell"> <a href="{{ route('posts.edit', ['id' => $posts->id]) }}" class="btn btn-edi
@foreach($allPosts as $key => $posts)
.
.
.
<td class="filterable-cell">
<a href="{{ route('posts.edit', ['id' => $posts->id]) }}" class="btn btn-edit btn-edit-remove"><i class="fa fa-pencil"></i></a>
<form class="inline" **action="{{ route('posts.destroy', $posts->id ) }}"** method="post" id="formDelete">
{{csrf_field()}}
<input name="_method" type="hidden" value="DELETE">
<button class="delete-brand btn btn-remove btn-edit-remove border-box deletePage" type="submit"><i class="glyphicon glyphicon-trash top-3"></i></button>
</form>
</td>
.
.
.
@endforeach
@foreach($key=>$posts的所有帖子)
.
.
.
{{csrf_field()}}
.
.
.
@endforeach
这可能是因为页面中有另一个$posts变量或类似的变量。我建议您在foreach中选择另一个名称,如$Post
@foreach($allPosts as $key => $Post)
.
.
.
<td class="filterable-cell">
<a href="{{ route('posts.edit', ['id' => $Post->id]) }}" class="btn btn-edit btn-edit-remove"><i class="fa fa-pencil"></i></a>
<form class="inline" **action="{{ route('posts.destroy', $Post->id ) }}"** method="post" id="formDelete">
{{csrf_field()}}
<input name="_method" type="hidden" value="DELETE">
<button class="delete-brand btn btn-remove btn-edit-remove border-box deletePage" type="submit"><i class="glyphicon glyphicon-trash top-3"></i>
</button>
</form>
</td>
@endforeach
@foreach($key=>$Post的所有帖子)
.
.
.
{{csrf_field()}}
@endforeach
如果您使用的是资源控制器,则应使用删除请求
<form method="POST" action="{{ route('posts.destroy', $posts->id)}}">
{{ csrf_field()}}
{{ method_field('DELETE')}}
<button class="delete-brand btn btn-remove btn-edit-remove border-box deletePage" type="submit"><i class="glyphicon glyphicon-trash top-3"></i></button>
</form>
这对我来说很好
你的表格上有身份证;由于它们位于foreach循环中,因此您将拥有多个具有相同Id的表单。这将导致您出现问题
解决这个问题的一个好方法是将posts id附加到您的id名称中,例如
<form id="buttonID{{ $posts->id }}">
在发送到之前,请给我$allPosts->pull('id')的结果view@MahdiYounesi,如下所示,它是您想要的输出:集合{652▼ #项目:阵列:15[▼ 0=>16 1=>19 2=>20 3=>21 4=>22 5=>25 6=>27 7=>28 8=>29 9=>30 10=>31 11=>32 12=>33 13=>50 14=>54]}您是否使用了一个资源丰富的控制器,@foreach($key=>$posts)而不仅仅是@foreach($posts as$post)是否有具体的原因?@ColinBarstow是的,我需要$key来为postsI建立索引,正如你所说的那样,但不幸的是,它不起作用。{{csrf_field()}{{method_field('DELETE')}}也没有帮助。关于这个,你想说,我应该用JS来处理这个问题?你使用的是什么版本的laravel?根本不需要JS。您只是从数据库中删除一个条目。您需要告诉数据库要删除的条目。如果您使用的是资源控制器,那么我所做的一切都会对您有用。不需要任何额外的东西。我的id声明只是简单地说明了这样一个事实:在foreach循环中,您正在给一个表单一个id。这意味着您将有多个具有相同id的表单,这将导致您出现问题。为什么您的表单有id?我很抱歉声明@csrf I而不是{{{csrf_field()},我已经习惯于使用较新的刀片指令。问题是帖子列表页面中最新帖子的id总是发送给控制器,控制器中的$post->delete()会删除另一篇帖子
<form id="buttonID{{ $posts->id }}">
@foreach($allposts as $post)