/** * @param $value * @throws ResourceValidationException */ public function validate($value) { $messages = new MessageCollection(); foreach ($this as $validator) { /** @var Validator $validator */ try { $validator->validate($value); } catch (ValidatorValidationException $e) { $messages->add($e->getValidator()->getErrorMessage($e)); } } if (count($messages) > 0) { throw ResourceValidationException::make($messages); } }
/** * @param string $path * @return mixed * @throws ResourceValidationException */ public function validate(string $path = '') { $messages = new MessageCollection(); foreach ($this->getResourceDefinition()->getFields() as $field) { /** @var ResourceField $field */ $value = $this->properties->getProperty($field); try { if (!isset($value)) { $field->validate(null, $path); } else { $value->validate($path); } } catch (PropertyValidationException $e) { $messages->merge($e->getMessages()); } } // Also check all resource wide requirements try { $this->getResourceDefinition()->getValidators()->validate($this); } catch (ResourceValidationException $e) { $messages->merge($e->getMessages()); } if (count($messages) > 0) { throw ResourceValidationException::make($messages); } }