ttensrl / flux
A description for flux.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:package
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 è un componente Bricks per la gestione degli stati del Flusso base per contenuti.
Stati Flusso Base
graph TD; Node1[Draft] --> Node2[Published]; Node2 --> Node3[Unpublished]; Node3 --> Node2;
Installazione
composer require laravel-bricks/flux
Pubblicazione Asset
E Possibile pubblicare gli Asset View, Lang ed il file di configurazione utilizzando la sintassi classica del comando artisan vendor:publish
php artisan vendor:publish --provider="LaravelBricks\Flux\FluxServiceProvider"
É inoltre possibile specificare un tag per selezionare il tipo di asset da publicare --tag"Bricks-Flux-Translations"
per i file delle lingue, --tag="Bricks-Flux-Config"
per i file di configurazione e --tag="Bricks-Flux-View"
per le viste.
Uso
Modifiche del Database
É necessario che la tabella che ospita i contenuti da sottoporre al flusso base, contenga un campo utile per l'implementazione della gestione degli stati del flusso, solitamente questo campo si chiama status
, aggiungere il campo alla vostra migration.
$table->string('status',32)->nullable();
Nel caso che, il nome del campo sia diverso da status, sarà necessario specificarlo nel file di configurazione bricks-flux.php
/* |-------------------------------------------------------------------------- | Nome del campo del database |-------------------------------------------------------------------------- | | Qui è possibile specificare il nome del campo in cui vengono salvati gli stati | */ 'column' => 'status',
Modifiche al Modello
Implementare l'interfaccia Flowable
ed aggiungere il Tratto HasEasyFlux
al Modello.
class Post extends Model implements Flowable { use HasEasyFlux;
E possibile specificare il valore dello stato per i tre stati fondamentali del flusso base nel file di configurazione 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' ]
Quando viene creato un record, automaticamente viene aggiunto lo stato draft.
Implementazione
laravel-bricks/Flux possiede due implementazioni preconfezionate per il cambio di stato, una è basata sui component di laravel, ed una è basata su Livewire.
Implementazione via Laravel Component
L'implementazione via component richiede di aggiungere un componente all'interno della form che gestisce la modifica, passando l'oggetto che implementa l'interfaccia Flowable.
<x-flux-status :flowable="$post" />
Per il salvataggio è necessario aggiungere la Facade di salvataggio nel'update del controller.
Utilizzare la 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'));
Implementazione via Livewire
L'implementazione via Livewire richiede soltanto l'inserimento del tag fuori da una form, non è necessario aggiungere altro al controller.
<livewire:flux-status :flowable="$post" />
Scope
É possibile ottenere l'elenco Eloquent tramite filtri preimpostati grazie al Tratto HasEasyFlux
per i contenuti in Bozza, Pubblicati e non Pubblicati.
$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
Salvataggio Stati
Se fosse necessario creare specifiche implemetazioni e si rendesse necessario salvare gli stati è possibile utilizzare i seguenti metodi.
$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
Accessors e Mutators
Il tratto HasEasyFlux
aggiunge due Accessors e un Mutator,
Accessor per la Traduzione
L'accessor per le lingue è invocabile tramite la proprietà $post->trans_status
, questa rispondera con la traduzione dello stato nella lingua corrente.
Accessor e Mutator per l'astrazione del campo
Il tratto HasEasyFlux
aggiunge un mutator ed un accessor per la proprieta $post->status
questa proprietà funzionerà indipendentemente dal nome del campo nel database.
Testing
Run the tests with:
vendor/bin/phpunit
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
Security
If you discover any security-related issues, please email stefano.pimpolari@tten.it instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.