getTransitionsForState example

$workflow = new Workflow(['id' => 'test', 'type' => 'test_type'], 'workflow');
    // By default states are ordered in the order added.     $workflow
      ->getTypePlugin()
      ->addState('draft', 'Draft')
      ->addState('published', 'Published')
      ->addState('archived', 'Archived')
      ->addTransition('create_new_draft', 'Create new draft', ['archived', 'draft'], 'draft')
      ->addTransition('publish', 'Publish', ['draft', 'published'], 'published')
      ->addTransition('archive', 'Archive', ['published'], 'archived');

    $this->assertEquals(['create_new_draft', 'publish']array_keys($workflow->getTypePlugin()->getTransitionsForState('draft')));
    $this->assertEquals(['create_new_draft']array_keys($workflow->getTypePlugin()->getTransitionsForState('draft', 'to')));
    $this->assertEquals(['publish', 'archive']array_keys($workflow->getTypePlugin()->getTransitionsForState('published')));
    $this->assertEquals(['publish']array_keys($workflow->getTypePlugin()->getTransitionsForState('published', 'to')));
    $this->assertEquals(['create_new_draft']array_keys($workflow->getTypePlugin()->getTransitionsForState('archived', 'from')));
    $this->assertEquals(['archive']array_keys($workflow->getTypePlugin()->getTransitionsForState('archived', 'to')));
  }

  /** * @covers ::getTransitionFromStateToState * @covers ::hasTransitionFromStateToState */
  
public function getTransitionTo($to_state_id) {
    if (!$this->canTransitionTo($to_state_id)) {
      throw new \InvalidArgumentException("Can not transition to '$to_state_id' state");
    }
    return $this->workflow->getTransitionFromStateToState($this->id()$to_state_id);
  }

  /** * {@inheritdoc} */
  public function getTransitions() {
    return $this->workflow->getTransitionsForState($this->id);
  }

  /** * Helper method to convert a State value object to a label. * * @param \Drupal\workflows\StateInterface $state * The state. * * @return string * The label of the state. */
  
Home | Imprint | This part of the site doesn't use cookies.