joshua060198 / nova-simple-status-with-enum
Laravel Nova 的简单状态字段
0.0.3
2020-11-26 11:55 UTC
Requires
- php: >=7.1.0
- bensampo/laravel-enum: 2.2.0
- simplesquid/nova-enum-field: ^2.2
This package is auto-updated.
Last update: 2024-09-26 21:08:50 UTC
README
使用徽章字段实现的简单状态指示器。
依赖项
本包使用
因此,请首先查看这些包的安装说明。
安装
composer require joshua060198/nova-simple-status-with-enum
截图
索引 / 详情
编辑
用法
-
创建你的枚举类并应用
MappableStatus特性。<?php namespace App\Enums; use BenSampo\Enum\Enum; use Joshua060198\NovaSimpleStatusWithEnum\MappableStatus; final class CategoryStatus extends Enum { use MappableStatus; const Active = 1; const NotActive = 0; }
-
MappableStatus特性提供了一个静态函数getMappedStatus()来获取Badge字段中的 CSS 类别的状态映射。你可以根据需要覆盖此功能。 重要:你需要为getMappedStatus()函数提供所有映射!<?php namespace App\Enums; use BenSampo\Enum\Enum; use Joshua060198\NovaSimpleStatusWithEnum\MappableStatus; final class CategoryStatus extends Enum { use MappableStatus; const Active = 1; const NotActive = 0; const MyCustomStatus = 2; public static function getMappedStatus() { $parent = static::$defaultMappedStatus; $new = [ 'My Custom Status' => 'bg-success-dark text-light' ]; return array_merge($parent, $new); } }
-
在资源中应用它
// app/Nova/Order.php use Joshua060198\EditableStatusCard\EditableStatusCard; class Category extends Resource { ... public function fields(Request $request) { return [ StatusView::make($this->status, CategoryStatus::class), StatusForm::make(CategoryStatus::class) ] } ... }
构造函数
StatusForm
你需要传递包含所有状态常量的枚举类。下一个参数与常规 nova 字段相同。
示例
StatusForm::make(CategoryStatus::class, 'Custom Status', 'my_status')
StatusView
此功能有两个必需参数。第一个参数提供你的状态字段的实际值,第二个参数传递包含所有常量的枚举类。
示例
StatusView::make($this->my_custom_status, CategoryStatus::class, 'My Status')
IMPORTANT!!
-
此状态字段将根据首字母大写将常量变量分割,并用空格显示。例如
final class CategoryStatus extends Enum { const NotActive = 0; }
将显示为
-
你需要在
getMappedStatus()函数中提供你的枚举常量的映射。例如,这将产生错误final class CategoryStatus extends Enum { use MappableStatus; const FirstCustomStatus = 0; const AnotherStatus = 1; const Active = 2; }
你必须像这样提供
FirstCustomStatus和AnotherStatus的映射final class CategoryStatus extends Enum { use MappableStatus; const FirstCustomStatus = 0; const AnotherStatus = 1; const Active = 2; public static function getMappedStatus() { $parent = static::$defaultMappedStatus; $new = [ 'First Custom Status' => 'custom-class', 'AnotherStatus' => 'bg-dark text-light' ]; return array_merge($parent, $new); } }
-
默认映射状态值为
public static $defaultMappedStatus = [ 'Active' => 'bg-success-light text-success-dark', 'Warning' => 'bg-warning-light text-warning-dark', 'Not Active' => 'bg-danger-light text-danger-dark', 'Approved' => 'bg-success-light text-success-dark', 'Waiting Approval' => 'bg-warning-light text-warning-dark', 'Not Approved' => 'bg-danger-light text-danger-dark', 'Delivered' => 'bg-success-light text-success-dark', 'Delivering' => 'bg-warning-light text-warning-dark', 'Not Delivered' => 'bg-danger-light text-danger-dark', 'Paid' => 'bg-success-light text-success-dark', 'Not Paid' => 'bg-danger-light text-danger-dark', ];
许可证
MIT 许可证。[https://github.com/joshua060198/nova-simple-status-with-enum/blob/HEAD/LICENSE](https://github.com/joshua060198/nova-simple-status-with-enum/blob/HEAD/LICENSE)


