Tạo chức năng Like, Follow, Bookmark, Subscribe, Favorite, Vote với package overtrue/laravel-follow

Tạo chức năng Like, Follow, Bookmark, Subscribe, Favorite, Vote với package overtrue/laravel-follow

overtrue/laravel-follow là package hỗ trợ tạo các chức năng như Like, Follow, Bookmark, Subscribe, Favorite, Vote.

1. Chức năng

  • Follow/Unfollow
  • Like/Dislike
  • Bookmark/UnBbookmark
  • Subscribe/Unsubscribe
  • Favorite/Unfavorite
  • Vote (Upvote & Downvote)

2. Yêu cầu

  • PHP 7.0 +
  • Laravel 5.5 +

3. Cài đặt

Để cài đặt các bạn dùng lệnh sau:

composer require overtrue/laravel-follow -vvv

Thêm service provider vào file config/app.php

Overtrue\LaravelFollow\FollowServiceProvider::class

a. Xuất migrations file

php artisan vendor:publish --provider="Overtrue\LaravelFollow\FollowServiceProvider" --tag="migrations"

b. Xuất config file

php artisan vendor:publish --provider="Overtrue\LaravelFollow\FollowServiceProvider" --tag="config"

c. Tạo tables

php artisan migrate

d. Thêm trait vào User Model

use Overtrue\LaravelFollow\Traits\CanFollow;
use Overtrue\LaravelFollow\Traits\CanLike;
use Overtrue\LaravelFollow\Traits\CanFavorite;
use Overtrue\LaravelFollow\Traits\CanSubscribe;
use Overtrue\LaravelFollow\Traits\CanVote;
use Overtrue\LaravelFollow\Traits\CanBookmark;

class User extends Model
{
    use CanFollow, CanBookmark, CanLike, CanFavorite, CanSubscribe, CanVote;
}

Lưu ý: Không nhất thiết phải thêm toàn bộ trait, các bạn chỉ cần thêm những trait muốn sử dụng. Ví dụ nếu chỉ dùng chức năng Like thì thêm như sau:

use Overtrue\LaravelFollow\Traits\CanLike;

class User extends Model
{
    use CanLike;
}

4. Sử dụng

Để sử dụng các bạn thêm trait vào model muốn bật chức năng. Ví dụ muốn bật chức năng Like, Bookmark trong model Post

use Overtrue\LaravelFollow\Traits\CanBeLiked;
use Overtrue\LaravelFollow\Traits\CanBeBookmarked;

class Post extends Model
{
    use CanBeLiked, CanBeBookmarked;
}

5. Danh sách APIs

Để xem các danh sách APIs các bạn có thể xem tại đây: overtrue/laravel-follow

6. Ví dụ

Tạo chức năng like bài viết bằng ajax:

Lưu ý: Để sử dụng được ajax thì các bạn cần tạo meta csrf trước thẻ </head>

<meta name=csrf-token content="{{csrf_token()}}">

a. Tạo route

Route::post('ajaxLike', '[email protected]')->name('ajaxLike');

b. Post Controller

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Post;

class PostController extends Controller
{
    public function ajaxLike(Request $request){
       if(!auth()->check()){
         return response()->json(['failed' => 'Bạn chưa đăng nhập !']);
       }
       $post = Post::find($request->id);
       $response = auth()->user()->toggleLike($post);

       return response()->json(['success' => $response]);
    }
}

c. Blade Template

@if($post->likers()->get()->count() == 0)

<i class="fa fa-thumbs-o-up likePost" aria-hidden="true" data-like="{{$post->id}}"></i>
{{__('Like')}}

@else

<i class="fa fa-thumbs-o-down likePost" aria-hidden="true" data-like="{{$post->id}}"></i>
{{__('DisLike')}}

@endif

d. Jquery Ajax

<script>
$(document).ready(function(){
   var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
   $(".likePost").click(function(){
      $.ajax({
         url: '{{route('ajaxLike')}}',
         type: 'POST',
         data: {
            _token: CSRF_TOKEN,
            id: $(this).data("like"),
         },
         dataType: 'JSON',
         success: function() {
            location.reload();
         }
      });
   });
});
</script>

Chúc các bạn thành công.

Post Comment