owowagency / laravel-settings
为 Laravel 框架提供设置功能的软件包。
Requires
- php: ^8.1
- laravel/framework: ^10.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-18 11:58:20 UTC
README
为 Laravel 框架提供设置功能的软件包。
安装
可以通过以下 Artisan 命令轻松安装此软件包。
composer require owowagency/laravel-settings
设置
要安装所有供应商文件,您可以运行以下命令。
php artisan vendor:publish --provider="OwowAgency\LaravelSettings\LaravelSettingsServiceProvider"
这将复制所有供应商文件,包括配置、迁移和资源。如果您只想安装某些文件,可以使用下一部分描述的命令。
配置
如果您想发布配置文件,可以使用以下命令
php artisan vendor:publish --provider="OwowAgency\LaravelSettings\LaravelSettingsServiceProvider" --tag=config
设置
settings 配置包含可以在应用程序中使用的所有值。每个设置都应该有一个唯一的键。对于设置键,我们建议使用像 Laravel Enum 这样的软件包。除了键之外,我们使用以下属性
title(默认:null):在这里您可以存储设置的简短标题。description(默认:null):关于设置的描述,您可能希望将其显示给用户。type(默认:string):设置的变量类型(类型应该可以通过settype()方法接受)。default(默认:null):如果用户尚未在数据库中存储值,则将使用的默认值。nullable(默认:true):表示此设置是否可以有null值。
表
table_name 配置包含用于表名的值。默认情况下,它已设置为 settings,但如果您想使用不同的表名,您可以使用此配置值更改它。
资源
此软件包使用 Laravel 的 API 资源。我们随软件包提供了一个资源,它将返回设置模型。如果您想使用自定义资源,您可以在列表中指定它们。
迁移
如果您想发布迁移,可以使用以下命令
php artisan vendor:publish --provider="OwowAgency\LaravelSettings\LaravelSettingsServiceProvider" --tag=migrations
路由
要设置此软件包所需的全部路由,您可以调用 Route 门面上的设置宏。通过这样做,所有此软件包所需的路由都将可用于调用。
Route::settings('users', App\Models\User::class);
将此添加到您的其中一个路由文件中(例如 routes/api.php)后,以下两个路由将可用。
索引
此路由可用于列出用户的全部设置:GET /users/{user}/settings。此路由将始终返回 settings 配置值中配置的所有设置。还包括尚未为认证用户存储的值。然后,软件包将使用默认配置值。
响应
[
{
"title": "Receive commercial emails",
"description": "Would you like to receive commercial emails for our marketing campaign?",
"type": "bool",
"default": false,
"nullable": false,
"key": "wants_promotion_emails",
"value": false
}
]
更新
此路由可用于更新指定的设置值:PATCH /users/{user}/settings。
请求
[
{
"key": "wants_promotion_emails",
"value": true
}
]
响应
[
{
"title": "Receive commercial emails",
"description": "Would you like to receive commercial emails for our marketing campaign?",
"type": "bool",
"default": false,
"nullable": false,
"key": "wants_promotion_emails",
"value": true
}
]
用法
如果您想某个模型(我们将使用用户模型为例)具有设置,可以将 OwowAgency\LaravelSettings\Models\Concerns\HasSettings 特性添加到该模型中。首先,您应该将 OwowAgency\LaravelSettings\Models\Concerns\HasSettingsInterface 添加到模型中。您的模型可能看起来像这样。
<?php namespace App\Models; use Illuminate\Foundation\Auth\User as BaseUser; use OwowAgency\LaravelSettings\Models\Concerns\HasSettings; use OwowAgency\LaravelSettings\Models\Contracts\HasSettingsInterface; class User extends BaseUser implements HasSettingsInterface { use HasSettings; }
现在,要从用户获取特定的配置值,您可以这样做
$user->settings->getValue('wants_promotion_emails'); // Or $user->settings->wants_promotion_emails;