/** * {@inheritdoc} */ public function validate(Form $form) { // first build the form $this->errorCollection->reset(); $this->buildForm($form); $this->validated = false; // check pre conditions first if ($this->getTransition()->checkPreCondition($this->item, $this->context, $this->errorCollection)) { $this->validated = true; // validate form input now if ($this->isInputRequired()) { $this->validated = $this->getForm()->validate(); if (!$this->validated) { $this->errorCollection->addError('transition.validate.form.failed', array(), $form->getErrorCollection()); } } // check conditions after validating the form so that context is setup if ($this->validated && !$this->getTransition()->checkCondition($this->item, $this->context, $this->errorCollection)) { $this->validated = false; } } // trigger the listener, no matter if validated so far $this->validated = $this->listener->onValidate($form, $this->validated, $this->workflow, $this->item, $this->context, $this->getTransition()->getName()); return $this->validated; }