dimonka2/flatstate

为Laravel提供的简化状态管理器

dev-master 2024-06-18 13:32 UTC

This package is auto-updated.

Last update: 2024-09-18 14:05:30 UTC


README

简单的Laravel模型状态管理包。此包允许您在状态模型中定义和存储状态,具有缓存和更新功能。

特性

  • 为Eloquent模型定义状态
  • 在单独的状态模型中存储和管理状态
  • 高效缓存和更新状态
  • 与Blade集成,便于状态格式化
  • 提供外观以简化状态管理

安装

  1. 通过Composer安装包
composer require dimonka2/flatstate
  1. 发布配置和迁移文件
php artisan vendor:publish --provider="dimonka2\flatstate\FlatstateServiceProvider"
  1. 运行迁移
php artisan migrate

使用方法

向模型添加状态

要向模型添加状态,使用Stateable特性。在模型中的$states属性中定义状态

use dimonka2\flatstate\Traits\Stateable;

class Project extends Model
{
    use Stateable;

    protected $states = [
        'state_id' => [
            'type' => 'projects',
            'default' => 'pr_active',
            ['name' => 'Active', 'key' => 'pr_active', 'descriptions' => '..', 'icon' => 'fa fa-info', 'color' => 'danger'],
        ],
    ];
}

访问和格式化状态

您可以使用Stateable特性提供的方法访问和格式化状态

$project = Project::find(1);

// Get the state key
$stateKey = $project->getState('state_id');

// Format the state with an icon
$formattedState = $project->formatStateState(true);

Blade集成

您可以在Blade模板中使用state指令来格式化状态

@state($project->state_id)

状态服务管理器

状态服务管理器类提供各种与状态交互的方法。它通过Flatstate外观类提供。

检索状态

use dimonka2\flatstate\Flatstate;

// Get state by key
$state = Flatstate::getState('pr_active');

// Get several states by key as array
$state = Flatstate::getState(['pr_active', 'pr_suspended']);

// Get state key by ID
$stateKey = Flatstate::getStateKey(1);

// Get state icon by ID
$stateIcon = Flatstate::getStateIcon(1);

// Get a list of states by type
$stateList = Flatstate::getStateList('projects');

管理缓存

您可以使用clearCache方法清除状态缓存

Flatstate::clearCache();

格式化状态

您可以使用formatState方法格式化状态

$formattedState = Flatstate::formatState($state, true);

命令

此包提供了一些Artisan命令

  • php artisan flatstate:list - 列出所有定义的状态
  • php artisan flatstate:seed - 将状态种植到数据库中
  • php artisan flatstate:generate - 为状态生成TypeScript定义

列出可用状态

flatstate:list命令允许您列出可用的状态类别或特定类别中的状态。

  • 要列出所有状态类别以及每个类别中的状态数量,请运行
php artisan flatstate:list
  • 要列出特定类别中的所有状态,请指定类别作为参数
php artisan flatstate:list {category}

示例用法

php artisan flatstate:list projects

这将输出一个表格,其中包含状态详细信息,如state_typestate_keyname和其他可填充字段。

种植状态

flatstate:seed命令允许您将模型中定义的状态种植到数据库中。

php artisan flatstate:seed

此命令处理模型中定义的状态并将它们保存到数据库中。它查找使用Stateable特性的模型并读取它们的$states属性以确定要种植的状态。

您也可以指定单个模型类进行种植

php artisan flatstate:seed {class?}

生成TypeScript定义

flatstate:generate命令为所有状态或特定类别中的状态生成TypeScript列表。这对于在前端代码中维护类型安全和一致性很有用。

使用方法

php artisan flatstate:generate {category?}

示例

要为所有状态生成TypeScript定义

php artisan flatstate:generate

要为特定类别生成TypeScript定义,请传递类别作为参数

php artisan flatstate:generate projects

这将输出一个包含所有状态定义的TypeScript文件,您可以在前端代码中使用它。

配置

配置文件flatstate.php将被发布到您的应用程序的配置目录。您可以根据需要自定义设置。

许可

此软件包是开源软件,许可协议为MIT许可