Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach laravel始终放置最新的迭代对象';post表单中的s属性作为路由的参数_Php_Laravel - Fatal编程技术网

Php foreach laravel始终放置最新的迭代对象';post表单中的s属性作为路由的参数

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

我想在用户点击帖子的删除按钮时将每个帖子的id发送到服务器,但在下面的代码中,当用户点击删除按钮时,最新帖子的id总是发送到后端,如何解决

@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)