Laravel 5.6类按钮
我正在使用Laravel5.6中的这个包在我的项目中添加likes系统 我已根据其文档更新了模型。然而,我对如何使用这个软件包感到困惑 我添加了以下内容,当登录用户访问链接时,会将其添加到特定的文章喜好列表中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', $
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')
},
});
})