/** * Validates this form * @return null * @throws zibo\library\validation\exception\ValidationException when one of the fields or * the form itself is not validated */ public function validate() { if (!$this->isSubmitted()) { throw new ZiboException('Form is not submitted'); } $this->validationException = new ValidationException(); $iterator = $this->fields->getIterator(); foreach ($iterator as $field) { $field->validate($this->validationException); } foreach ($this->validators as $validator) { $validator->isValid($this); } if ($this->validationException->hasErrors()) { throw $this->validationException; } }
/** * Sets a validation exception to this form * @param zibo\library\validation\exception\ValidationException $exception * @return null */ public function setValidationException(ValidationException $exception) { $this->validationException = $exception; foreach ($this->fields as $fieldName => $field) { if ($exception->hasErrors($fieldName)) { $field->appendToClass(Field::CLASS_VALIDATION_ERROR); } } }
/** * Provides a hook for additional form validation * @return null * @throws zibo\library\validation\exception\ValidationException when a validation error occurs */ public function onProfileFormValidate() { $validationException = new ValidationException(); if ($this->isPasswordSubmitted()) { $password = $this->getPassword(); $passwordConfirmation = $this->getPasswordConfirmation(); $validator = new RequiredValidator(); if (!$validator->isValid($password)) { $validationException->addErrors(self::FIELD_PASSWORD, $validator->getErrors()); } if (!$validator->isValid($passwordConfirmation)) { $validationException->addErrors(self::FIELD_PASSWORD_CONFIRM, $validator->getErrors()); } if (!$validationException->hasErrors() && $password != $passwordConfirmation) { $error = new ValidationError(self::TRANSLATION_ERROR_PASSWORD_MATCH, "Your passwords do not match"); $validationException->addErrors(self::FIELD_PASSWORD, array($error)); } } if ($validationException->hasErrors()) { throw $validationException; } }