dimonka2 / flatstate
为Laravel提供的简化状态管理器
Requires
- php: ^7 | ^8
- composer/composer: ^2
- laravel/framework: ^7 | ^8 | ^9 | ^10 | ^11.0
This package is auto-updated.
Last update: 2024-09-18 14:05:30 UTC
README
简单的Laravel模型状态管理包。此包允许您在状态模型中定义和存储状态,具有缓存和更新功能。
特性
- 为Eloquent模型定义状态
- 在单独的状态模型中存储和管理状态
- 高效缓存和更新状态
- 与Blade集成,便于状态格式化
- 提供外观以简化状态管理
安装
- 通过Composer安装包
composer require dimonka2/flatstate
- 发布配置和迁移文件
php artisan vendor:publish --provider="dimonka2\flatstate\FlatstateServiceProvider"
- 运行迁移
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_type
、state_key
、name
和其他可填充字段。
种植状态
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许可。