laravel-bricks / flux
flux 的描述。
Requires
- php: ^8.0|^8.1
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.0
This package is auto-updated.
Last update: 2024-09-29 17:36:07 UTC
README
Flux 是一个用于管理基础内容的流程状态的 Bricks 组件。
基础流程状态
安装
composer require laravel-bricks/flux
发布资产
可以使用传统的 Artisan 命令 vendor:publish
来发布 View、Lang 和配置文件。
php artisan vendor:publish --provider="LaravelBricks\Flux\FluxServiceProvider"
还可以指定一个标签来选择要发布的资产类型,例如 --tag"Bricks-Flux-Translations"
用于语言文件,--tag="Bricks-Flux-Config"
用于配置文件,--tag="Bricks-Flux-View"
用于视图。
使用
数据库修改
承载需要提交到基础流程的内容的表必须包含一个用于实现流程状态管理的字段,通常这个字段称为 status
,将其添加到您的 migration 中。
$table->string('status',32)->nullable();
如果字段名称不是 status,需要在配置文件 bricks-flux.php
中指定它。
/* |-------------------------------------------------------------------------- | Nome del campo del database |-------------------------------------------------------------------------- | | Qui è possibile specificare il nome del campo in cui vengono salvati gli stati | */ 'column' => 'status',
模型修改
实现 Flowable 接口,并将 HasEasyFlux 特性添加到 模型 中。
class Post extends Model implements Flowable { use HasEasyFlux;
可以在配置文件 bricks-flux.php
中指定三个基本流程状态的状态值。
/* |-------------------------------------------------------------------------- | Valori degli stati del flusso base |-------------------------------------------------------------------------- | | Qui è possibile specificare per i tre stati fondamentali draft, published, unpublished | il valore da inserire all'interno del campo del database | */ 'status' => [ 'draft' => 'draft', 'published' => 'published', 'unpublished' => 'unpublished' ]
创建记录时,会自动添加 草案 状态。
实现
laravel-bricks/Flux 包含两个预配置的状态变更实现,一个是基于 Laravel 组件 的,另一个是基于 Livewire 的。
Laravel 组件实现
通过 component 的实现需要在处理修改的 form 中添加一个组件,传递实现 Flowable 接口的对象。
<x-flux-status :flowable="$post" />
对于保存,需要在 controller 的更新中添加保存 Facade。
使用 Facade Capacitor::fluxing(Flowable $object, String $status)
$post->title = $request->post('title'); $post->body = $request->post('body'); $post->save(); Capacitor::fluxing($post, $request->post('status'));
Livewire 实现
Livewire 的实现只需要在表单外部插入一个标签,不需要在 controller 中添加其他内容。
<livewire:flux-status :flowable="$post" />
范围
可以通过 HasEasyFlux 特性使用预置的过滤器通过 Eloquent 获取列表,用于草稿、发布和未发布的内容。
$posts = Post::draft()->get(); //Ottiene tutti i contenuti nello stato bozza $posts = Post::published()->get(); //Ottiene tutti i contenuti nello stato Pubblicato $posts = Post::unPublished()->get(); //Ottiene tutti i contenuti nello stato Non Pubblicato $posts = Post::notPublished()->get(); //Ottiene tutti i contenuti negli stati diversi da pubblicato
保存状态
如果需要创建特定的实现并需要保存状态,可以使用以下方法。
$post->title = $request->post('title'); $post->body = $request->post('body'); $post->save(); $post->publish(); //Imposta lo stato su Pubblicato $post->unPublish(); //Imposta lo stato su non pubblicato $post->togglePublish(); //Imposta lo stato su pubblicato se lo stato è bozza o non pubblicato, e lo stato su non pubblicato se lo stato è pubblicato
访问器和修改器
HasEasyFlux
特性添加了两个访问器和修改器。
翻译访问器
访问器 通过 $post->trans_status
属性调用,它将在当前语言中返回状态的翻译。
字段抽象的访问器和修改器
HasEasyFlux
特性为 $post->status
属性添加了修改器和访问器,这个属性将独立于数据库中字段的名称工作。
测试
使用以下命令运行测试
vendor/bin/phpunit
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
致谢
安全
如果您发现任何与安全相关的问题,请通过电子邮件 stefano.pimpolari@tten.it 联系,而不是使用问题跟踪器。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。