owowagency/laravel-settings

此软件包的最新版本(v1.0.0)没有可用的许可信息。

为 Laravel 框架提供设置功能的软件包。

v1.0.0 2023-08-18 09:39 UTC

This package is auto-updated.

Last update: 2024-09-18 11:58:20 UTC


README

Total Downloads Latest Stable Version

为 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;