/** * Validate form data */ public function onValidate() { $this->errors = array(); $elements = $this->getElements(); foreach ($this->formData as $index => $row) { try { $this->form->dispatch(Form::ON_BEFORE_VALIDATE, $this, $row); } catch (\Simplify\ValidationException $e) { $this->errors = array_merge_recursive($this->errors, $e->getErrors()); } $elements->rewind(); while ($elements->valid()) { $element = $elements->current(); $elements->next(); if ($element->validate === true || $this->show($element->validate)) { try { $element->onValidate($this, $row); } catch (\Simplify\ValidationException $e) { $this->errors[$element->getName()] = $e->getErrors(); $element->state = 'has-error'; $element->stateMessage = $this->errors[$element->getName()]; } } } try { $this->form->dispatch(Form::ON_VALIDATE, $this, $row); } catch (\Simplify\ValidationException $e) { $this->errors = array_merge_recursive($this->errors, $e->getErrors()); } } if (!empty($this->errors)) { throw new \Simplify\ValidationException($this->errors); } }