ttensrl / 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-03-29 16:35:44 UTC
README
Flux 是 Bricks 组件用于管理基础内容状态的组件。
基础状态流
graph TD; Node1[Draft] --> Node2[Published]; Node2 --> Node3[Unpublished]; Node3 --> Node2;
安装
composer require laravel-bricks/flux
发布资产
可以使用经典的 artisan 命令 vendor:publish 发布 View、Lang 和配置文件。
php artisan vendor:publish --provider="LaravelBricks\Flux\FluxServiceProvider"
还可以指定标签以选择要发布的 asset 类型,例如,使用 --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' ]
创建记录时,会自动添加 draft 状态。
实现
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
变更日志
请参阅变更日志获取更多关于最近变更的信息。
贡献
请参阅贡献指南以获取详细信息。
致谢
安全
如果您发现任何与安全相关的问题,请通过电子邮件stefano.pimpolari@tten.it联系,而不是使用问题跟踪器。
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。