martian / laravatar
🚀 一个轻量级且易于使用的Laravel扩展包,用于为您的模型添加头像
Requires
- php: ^7.4|^8.0
- illuminate/support: ^10.0
Requires (Dev)
- orchestra/testbench: ^8.18
- pestphp/pest: ^1.23
- pestphp/pest-plugin-laravel: ^1.4
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-09 15:06:02 UTC
README
🚀 一个轻量级且易于使用的Laravel扩展包,旨在简化Eloquent模型的头像生成。它提供了一种灵活且可扩展的解决方案,用于通过Gravatar、DiceBear、UI Avatars或Boring 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驱动程序,您需要使用电子邮件列作为头像列。如果您使用的是dicebear、ui-avatars或boringavatar驱动程序,您可以使用任何列作为头像列,前提是该列是字符串列。(例如:name、email、username等。)
警告
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)。有关更多信息,请参阅许可证文件。