Laravel - 从登录用户中删除特定帖子

时间:2017-05-10 11:26:34

标签: php laravel

我正在尝试在登录用户的帖子上创建删除按钮。登录用户可以看到其他人的帖子,只删除自己的帖子。我已经设法删除按钮只出现在他自己的帖子上。我认为问题出在视图中的路径中..

控制器:

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');

3 个答案:

答案 0 :(得分:6)

$post->delete;更改为$post->delete();因为delete()方法是一个函数。如果您使用资源,您应该使用delete方法发送请求以进行call destroy方法。但你不能从表单中做到这一点,因为只支持post和get,另一种解决方案你可以使用隐藏输入并使用post方法发送<input name="_method" type="hidden" value="DELETE">

答案 1 :(得分:0)

您需要指定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名称。

答案 2 :(得分:0)

我认为你应该在视图中编辑这样的路线,

route('posts.destroy, ['id' => $post->id]'),如果不起作用,请执行php artisan route:list再次检查您的指定路线,并尝试发布完整错误以便更好地理解。