foreach laravel всегда помещает свойство объекта последней итерации в почтовую форму в качестве аргумента для маршрутизации - PullRequest
0 голосов
/ 12 мая 2018

Я хочу отправить идентификатор каждого сообщения на сервер, когда пользователь нажимает кнопку удаления сообщения, но в моем коде, приведенном ниже, когда пользователь нажимает кнопку удаления, идентификатор последнего сообщения всегда отправляется на сервер , Как ее решить?

@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

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Если вы используете контроллер ресурсов, вы должны использовать запрос на удаление.

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

Используя этот метод, вы просто назвали бы свое удаление следующим образом:

public function destroy(Post $post)
{
    $post->delete();
}

Это прекрасно работает для меня.

У вас есть идентификатор в вашей форме;поскольку они находятся внутри цикла foreach, у вас будет несколько форм с одинаковым Id.Который собирается вызвать у вас проблемы.

Хороший способ заключается в добавлении идентификатора постов к вашему идентификатору, например

<form id="buttonID{{ $posts->id }}">

Кроме того, так как это foreach, хорошей практикой является использование единственного имени, такого как $ post

@foreach($allposts as $post)
0 голосов
/ 12 мая 2018

Это, вероятно, потому что у вас есть другая переменная $ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...