aecy / badge
此包已被废弃且不再维护。未建议替代包。
将徽章系统添加到您的 Laravel 项目中
dev-master
2018-11-02 17:24 UTC
This package is auto-updated.
Last update: 2023-01-29 03:44:42 UTC
README
此包可以帮助您创建徽章,您可以将徽章添加到用户,等等...
功能
当用户在您的应用程序中发表评论时,您可以奖励他们,您可以为评论添加新的徽章并创建自己的徽章,例如创建高级徽章...
安装
所需
- PHP 7.0 +
- Laravel 5.5 +
- 简单的评论系统,包含
user_id
列表
您可以使用 composer
安装此包并运行 vendor:publish
$ composer require aecy/badge
$ php artisan vendor:publish --provider='Aecy\Badge\BadgeServiceProvider' --tag="migrations"
您的 Comment
模型徽章已创建并适用于应用程序使用,要在 Comment
上使用它,您需要在您的模型中添加此特质。
use Badgeable;
别忘了:导入类。
创建徽章
创建自己的徽章,在 App\Events\
中创建 Premium.php
,如果 App
文件夹中不存在 Events
文件夹,则创建它。
在 Premium.php
中复制并粘贴
<?php namespace App\Events; use App\User; class Premium { public $user; public function __construct(User $user) { $this->user = $user; } }
为什么我在此事件类中使用 User
模型,因为我的高级系统是应用于用户的。
扩展 BadgeSubcriber.php
类并添加一个事件监听器,如下所示
public function subscribe ($events) { parent::boot(); $events->listen('App\Events\Premium', [$this, 'onPremium']); }
现在在扩展 BadgeSubcriber
的类中添加此函数
public function onPremium ($event) { $badge = $this->badge->unlockActionFor($event->user, 'premium'); $this->notifyBadge($event->user, $badge); }
完成!
PHPUnit 测试
如果您想,可以创建一个 PHPUnit 测试来检查您自己的徽章解锁,如下所示
public function test_unlock_premium_badge() { Badge::create(['name' => 'Premium', 'action' => 'premium', 'action_count' => 0]); $user = factory(User::class)->create(); event(new Premium($user)); $this->assertEquals(1, $user->badges()->count()); }
许可证
MIT