aecy/badge

此包已被废弃且不再维护。未建议替代包。

将徽章系统添加到您的 Laravel 项目中

安装量: 3,352

依赖者: 0

建议者: 0

安全: 0

星标: 4

关注者: 0

分支: 5

类型: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