martian/laravatar

🚀 一个轻量级且易于使用的Laravel扩展包,用于为您的模型添加头像

v1.0.1 2023-12-29 20:02 UTC

This package is auto-updated.

Last update: 2024-09-09 15:06:02 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

🚀 一个轻量级且易于使用的Laravel扩展包,旨在简化Eloquent模型的头像生成。它提供了一种灵活且可扩展的解决方案,用于通过GravatarDiceBearUI AvatarsBoring Avatar生成头像。

支持的头像驱动程序

注意

您还可以通过实现AmplifiedHQ\Laravatar\Contracts\AvatarInterface;接口并扩展AmplifiedHQ\Laravatar\Abstracts\BaseAvatar类来自定义自己的驱动程序。

安装

注意:此包需要PHP 7.4或更高版本。您可以通过composer安装此包。

composer require martian/laravatar

注册服务提供者

将服务提供者添加到config/app.php文件中的providers数组中

AmplifiedHQ\Laravatar\Providers\LaravatarServiceProvider::class,

发布配置文件

使用以下命令发布配置文件

php artisan vendor:publish --provider="AmplifiedHQ\Laravatar\Providers\LaravatarServiceProvider" --tag="config"

配置

您可以通过编辑config/laravatar.php文件来配置此包。

  • 在配置文件中,您可以指定跨应用程序使用的默认头像驱动程序。
'default' => env('LARAVATAR_DRIVER', 'gravatar'),
  • 如果您想更改驱动程序的默认选项,您可以通过编辑config/laravatar.php文件来实现。
'drivers' => [
    ...
    'gravatar' => [
            'class' => \AmplifiedHQ\Laravatar\Drivers\Gravatar::class,
            'options' => [
                'size' => 96,
            ],
        ],
    ...
],

用法

要使用此包在您的模型中动态生成头像,您需要将AmplifiedHQ\Laravatar\Traits\HasAvatar特性添加到您的模型中。

使用HasAvatar特性

namespace App\Models;

use AmplifiedHQ\Laravatar\HasAvatar;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable, HasAvatar;

    /** @var Avatar Column */
    protected $avatarColumn = 'email';

    /** @var Avatar Storage Column */
    protected $avatarStorageColumn = 'avatar';

    ...
}

重要

如果您使用的是gravatar驱动程序,您需要使用电子邮件列作为头像列。如果您使用的是dicebearui-avatarsboringavatar驱动程序,您可以使用任何列作为头像列,前提是该列是字符串列。(例如:nameemailusername等。)

警告

HasAvatar特性要求您在模型中定义$avatarColumn$avatarStorageColumn属性。其中,$avatarColumn属性是用于生成头像的列。而$avatarStorageColumn属性是用于存储头像的列。

使用驱动程序方法

您还可以直接在应用程序的控制器、模型或视图中使用每个驱动程序的方法。

Gravatar

use AmplifiedHQ\Laravatar\Drivers\Gravatar;
use App\Http\Controllers\Controller;

class UserController extends Controller {

    public function generateAvatar()
    {
        $gravatar = new Gravatar('jane@example.com');
        $gravatar->setSize(100);
        $gravatar->getUrl(); // https://www.gravatar.com/avatar/9e26471d35a78862c17e467d87cddedf?size=100
    }
}

DiceBear

use AmplifiedHQ\Laravatar\Drivers\DiceBear;
use App\Http\Controllers\Controller;

class UserController extends Controller {

    public function generateAvatar()
    {
        $dicebear = new DiceBear('Jane Doe');
        $dicebear->setStyle('lorelei');
        $dicebear->setSize(100);
        $dicebear->setFormat('svg');
        $dicebear->getUrl(); // https://api.dicebear.com/7.x/lorelei/svg?seed=Jane%20Doe&size=100
    }
}

Boring Avatar

use AmplifiedHQ\Laravatar\Drivers\BoringAvatar;
use App\Http\Controllers\Controller;

class UserController extends Controller {

    public function generateAvatar()
    {
        $boringAvatar = new BoringAvatar('Jane Doe');
        $boringAvatar->setSize(100);
        $boringAvatar->setFormat('svg');
        $boringAvatar->setVariant('marble');
        $boringAvatar->setSquare(true);
        $boringAvatar->getUrl(); // https://boring-avatars-api.vercel.app/api/avatar?size=100&variant=marble&name=Jane%20Doe&sqaure=1
    }
}

UI Avatars

use AmplifiedHQ\Laravatar\Drivers\UiAvatars;
use App\Http\Controllers\Controller;

class UserController extends Controller {

    public function generateAvatar()
    {
        $uiAvatars = new UiAvatars('Jane Doe');
        $uiAvatars->setSize(100);
        $uiAvatars->setFormat('svg');
        $uiAvatars->setBackgroundColor('000000'); // Hexadecimal
        $uiAvatars->setForegroundColor('ffffff'); // Hexadecimal
        $uiAvatars->setRounded(true);
        $uiAvatars->getUrl(); // https://ui-avatars.com/api/?name=Jane%20Doe&size=100&background=000000&color=ffffff&rounded=true
    }
}
    

测试

composer test

变更日志

请参阅变更日志获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全

如果您发现任何安全问题,请通过hendurhance.dev@gmail.com发送电子邮件,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件