[英]Laravel - delete specific post from logged in user
我正在嘗試對已登錄用戶的帖子進行刪除按鈕。已登錄用戶可以查看其他人的帖子,並且只能刪除自己的帖子。 我已經設法將刪除按鈕僅出現在自己的帖子中。 我認為問題出在視圖中的路線上。
控制器:
public function destroy($id)
{
$post = Post::find($id);
$post->delete;
return view('/home', [
'posts' => $post
]);
}
視圖:
@if ($post->checkUser(Auth::user()))
<form action="{{ route('posts.destroy, $post') }}" method="POST">
<input type="hidden" name="_method" value="DELETE">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button>Delete</button>
</form>
@endif
路線:
Route::resource('posts', 'PostController');
更改$post->delete;
到$post->delete()
; 因為delete()方法是一個函數。 如果您使用資源,則應發送帶有delete方法的請求作為呼叫銷毀方法。 但是您不能從表單中執行此操作,因為僅支持發布和獲取,另一種解決方案可以使用隱藏輸入並通過發布方法發送, <input name="_method" type="hidden" value="DELETE">
您需要同時指定post_id和user_id。
public function destroy($id)
{
$user_id = Auth::user();
$post = Post::where('post_id', $id)->where('user_id',$user_id)-get();
$post->delete();
// do your rest of code
}
根據您的表字段名稱更改post_id和user_id名稱。
我認為您應該在視圖中修改路線,使其看起來像這樣,
route('posts.destroy, ['id' => $post->id]')
,如果這樣不起作用,請通過php artisan route:list
再次檢查您的命名路由,並嘗試發布完整的錯誤信息更好的理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.