2014-04-07 4 views
6

Ich frage mich, ob Laravel Zustandsmaschine Mechanismus some-in gebaut hat? Und wenn nicht, was ist der beste Weg, um diese ausgezeichnete Bibliothek namens Finite (https://github.com/yohang/Finite) zu verwenden.Finite State Machine & Ausdauer in Laravel

Hier ist, was ich habe (Anwendungsfall: ein Job Board):

  • Der Benutzer erstellt ein Angebot (Ausgangszustand: erstellt)
  • Benutzer eine Vorschau des Angebots (Stand: Entwurf)
  • User veröffentlichten das Angebot (Endzustand: veröffentlicht)

zu starten, habe ich mein Modell "Stateful":

use Finite\StatefulInterface; 
class Offer extends Eloquent implements StatefulInterface { 

Dann in meine Angebote Controller speichern Aktion:

$stateMachine = new StateMachine(); 
$stateMachine->addState(new State('created', StateInterface::TYPE_INITIAL)); 
$stateMachine->addState('draft'); 
$stateMachine->addState(new State('published', StateInterface::TYPE_FINAL)); 

$stateMachine->addTransition('preview', 'created', 'draft'); 
$stateMachine->addTransition('publish', 'draft', 'published'); 

$stateMachine->setObject($offer); 
$stateMachine->initialize(); 

Von dem, was ich verstehe, wenn ein Benutzer eine Vorschau ein Angebot (zum Beispiel), sollte ich anrufen werden:

$stateMachine->apply('preview'). 

Meine Frage ist:

Wie kann ich den Überblick über alle Zustände und Übergänge über meine Anwendung? Speichere ich Staaten in meinem Angebotsmodell? Erstelle ich zusätzliche Tabellen?

+0

Bitte teilen Sie Ihre Anzeigen! :-) – menjaraz

+0

Wie startet man die Zustandsmaschine mit Normalzustand? https://github.com/yohang/Finite/issues/114 –

Antwort