ttensrl/flux

此包已被弃用且不再维护。未建议替代包。

flux 的描述。

维护者

详细信息

github.com/ttensrl/flux

源代码

问题

安装: 1

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:package

v2.1.0 2024-03-29 16:34 UTC

This package is auto-updated.

Last update: 2024-03-29 16:35:44 UTC


README

Software License Travis Total Downloads

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)。请参阅许可证文件获取更多信息。