Jelajahi Sumber

Se añade función para obtener la definición del workflow desde el servicio de workflow.registry. Caso contrario, retorna null y en el reset de estado, se setea en null por no tener datos de definición de workflow.

Maximiliano Schvindt 8 tahun lalu
induk
melakukan
25b51a3d44
2 mengubah file dengan 20 tambahan dan 1 penghapusan
  1. 6 1
      Controller/WorkflowController.php
  2. 14 0
      Entity/Workflow.php

+ 6 - 1
Controller/WorkflowController.php

@@ -71,7 +71,12 @@ class WorkflowController extends Controller
         $workflow = $object->getWorkflowObject();
 
         if($workflow) {
-            $object->setCurrentState($workflow->getInitialPlace($object));
+            $definition = $workflow->getDefinition();
+            if($definition) {
+                $object->setCurrentState($definition->getInitialPlace($object));
+            } else {
+                $object->setCurrentState(null);
+            }
         } else {
             $object->setCurrentState(null);
         }

+ 14 - 0
Entity/Workflow.php

@@ -434,6 +434,20 @@ class Workflow
         }
     }
 
+    public function getDefinition($subject) {
+        global $kernel;
+
+        try {
+            $registry = $kernel->getContainer()->get("workflow.registry");
+            $definition = $registry->get($subject, $this->name)->getDefinition();
+        } catch (\Exception $e) {
+            return null;
+        }
+
+        return $definition;
+
+    }
+
     public function getInitialPlace($subject) {
 
         global $kernel;