
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.
Các bạn copy bài viết sang website khác, vui lòng ghi nguồn VietLaravel.com. Xin cảm ơn.
Post Comment