/**
  * @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);
     }
 }
예제 #2
0
 /**
  * @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);
     }
 }
 /**
  * @param ResourceValidationException $e
  * @return \Symfony\Component\HttpFoundation\Response
  */
 protected function getValidationErrorResponse(ResourceValidationException $e)
 {
     return Response::json(['error' => ['message' => 'Could not decode resource.', 'issues' => $e->getMessages()->toMap()]])->setStatusCode(400);
 }