Laravel 5.6类按钮

Laravel 5.6类按钮,laravel,laravel-5.6,Laravel,Laravel 5.6,我正在使用Laravel5.6中的这个包在我的项目中添加likes系统 我已根据其文档更新了模型。然而,我对如何使用这个软件包感到困惑 我添加了以下内容,当登录用户访问链接时,会将其添加到特定的文章喜好列表中 public function show(ArticleCategory $articlecategory, $slug) { $categories = ArticleCategory::all(); $article = Article::where('slug', $

我正在使用Laravel5.6中的这个包在我的项目中添加likes系统

我已根据其文档更新了模型。然而,我对如何使用这个软件包感到困惑

我添加了以下内容,当登录用户访问链接时,会将其添加到特定的文章喜好列表中

public function show(ArticleCategory $articlecategory, $slug)
{
    $categories = ArticleCategory::all();
    $article = Article::where('slug', $slug)->first();
    $user = User::first();
    $user->addFavorite($article);
    return view('articles.show', compact('article', 'categories'));
}
在我的用户仪表板中,我可以用

$user = Auth::user();
$favoritearticles = $user->favorite(Article::class);
但我正在寻找一种功能,在文章页面上有一个按钮,当登录用户单击该按钮时,他会被添加到喜欢列表中。我以前从来没有试过,所以在这一点上卡住了

我换了

$user->addFavorite($article);

但这只是切换最喜欢的列表。我的意思是,当我访问一次链接时,登录的用户会被添加到喜欢列表中。当我第二次访问链接时,登录的用户将从喜欢列表中删除。循环是重复的


有人能给我解释一下如何使用按钮实现类似的功能吗?

在文章页面中使用按钮创建表单

<form action="{{url('favorite/{$post->id}')}}" method="post">
@if($post->isFavorited())
<button type="submit">Remove from favorite</button>
@else
<button type="submit">Add to favorite</button>
@endif
</form>
你就快到了, 您必须添加一个
按钮
,单击该按钮将触发对服务器的AJAX请求,以便在不刷新页面的情况下执行所需操作,下面是一个示例:

首先,您将添加一个按钮并为其提供一个ID或类:

<button class="like">Like</button>
当然,还要将路由添加到您的
routes.php

Router::get('like/{slug}',"ArticleController@like");
然后添加函数(这里使用jQuery)来钩住AJAX调用

$('.like').on('click', function(){
  $.ajax({
    type: "GET",
    url: 'wwww.example.com/articles/slug',
    data: {slug: 'the slug'},
    success: function(data){
      alert('its done')
    },
  });
})

这很有魅力。我还有最后一个问题。我在我的文章页面中使用了Like-Like。当我点击它时,它会添加,当我再次点击它时,它会删除类似的内容。但是当我刷新页面时,按钮会显示like而不是like。如果用户已经喜欢上了,我无法在评论中提到Sletheren,
对我不起作用。请原谅上面评论中代码的不正确对齐您好,您可以通过在刀片模板中加载您所做的文章页面来做到这一点,例如
@if($post->isFavorited())Unlike@else比如
希望你能得到它;)
public function like($slug)
{
    $article = Article::where('slug', $slug)->first();
    $user = \Auth::user(); //to get authenticated user...
    $user->toggleFavorite($article); // toggle so if u already like it u remove it from the liked table
    return response()->json(['status': 1])
}
Router::get('like/{slug}',"ArticleController@like");
$('.like').on('click', function(){
  $.ajax({
    type: "GET",
    url: 'wwww.example.com/articles/slug',
    data: {slug: 'the slug'},
    success: function(data){
      alert('its done')
    },
  });
})