コード例 #1
0
 /**
  * @param object $command
  * @param ConstraintViolationListInterface $violations
  * @return static
  */
 public static function onCommand($command, ConstraintViolationListInterface $violations)
 {
     $exception = new static('Validation failed for ' . get_class($command) . ' with ' . $violations->count() . ' violation(s).');
     $exception->command = $command;
     $exception->violations = $violations;
     return $exception;
 }
 public function handleExceptions(ConstraintViolationListInterface $violations)
 {
     if ($violations->count() > 0) {
         $violation = $violations->get(0);
         $this->throwValidationException($violation);
     }
 }
コード例 #3
0
ファイル: CartListenerSpec.php プロジェクト: bcremer/Sylius
 function it_should_not_save_an_invalid_cart($manager, $provider, $validator, CartEvent $event, CartInterface $cart, ConstraintViolationListInterface $constraintList)
 {
     $constraintList->count()->willReturn(1);
     $event->getCart()->willReturn($cart);
     $validator->validate($cart)->shouldBeCalled()->willReturn($constraintList);
     $manager->persist($cart)->shouldNotBeCalled();
     $manager->flush()->shouldNotBeCalled();
     $provider->setCart($cart)->shouldNotBeCalled();
     $this->saveCart($event);
 }
コード例 #4
0
 /**
  * @param ConstraintViolationListInterface $violations
  * @param array                            $item
  *
  * @throws InvalidItemException
  */
 protected function manageViolations(ConstraintViolationListInterface $violations, array $item)
 {
     if ($violations->count() > 0) {
         $violationsMessage = '';
         foreach ($violations as $violation) {
             $violationsMessage .= PHP_EOL . $violation->getMessage();
         }
         $errorMessage = sprintf('Tag with code "%s" can\'t be process :%s', $item['code'], $violationsMessage);
         throw new InvalidItemException($errorMessage, $item);
     }
 }
コード例 #5
0
 public static function printViolations(ConstraintViolationListInterface $violations)
 {
     if ($violations->count() == 0) {
         echo "No violations\n";
     } else {
         /** @var ConstraintViolation $violation */
         foreach ($violations as $index => $violation) {
             echo $index . ' ' . $violation->getPropertyPath() . ': ' . $violation->getMessage() . "\n";
         }
     }
     echo "\n";
 }
コード例 #6
0
 /**
  * Configure job instance for uploaded file
  *
  * @param JobInstance $jobInstance
  * @param File        $file
  *
  * @return bool
  */
 protected function configureUploadJob(JobInstance $jobInstance, File $file)
 {
     $success = false;
     $job = $jobInstance->getJob();
     foreach ($job->getSteps() as $step) {
         if (method_exists($step, 'getReader')) {
             $reader = $step->getReader();
             if ($reader instanceof UploadedFileAwareInterface) {
                 $constraints = $reader->getUploadedFileConstraints();
                 $this->fileError = $this->getValidator()->validateValue($file, $constraints);
                 if ($this->fileError->count() !== 0) {
                     foreach ($this->fileError as $error) {
                         $this->addFlash('error', $error->getMessage());
                     }
                     return false;
                 } else {
                     $reader->setUploadedFile($file);
                     $success = true;
                 }
             }
         }
     }
     return $success;
 }
コード例 #7
0
ファイル: WidgetBase.php プロジェクト: ddrozdik/dmaps
 /**
  * {@inheritdoc}
  */
 public function flagErrors(FieldItemListInterface $items, ConstraintViolationListInterface $violations, array $form, FormStateInterface $form_state)
 {
     $field_name = $this->fieldDefinition->getName();
     $field_state = static::getWidgetState($form['#parents'], $field_name, $form_state);
     if ($violations->count()) {
         // Locate the correct element in the form.
         $element = NestedArray::getValue($form_state->getCompleteForm(), $field_state['array_parents']);
         // Do not report entity-level validation errors if Form API errors have
         // already been reported for the field.
         // @todo Field validation should not be run on fields with FAPI errors to
         //   begin with. See https://www.drupal.org/node/2070429.
         $element_path = implode('][', $element['#parents']);
         if ($reported_errors = $form_state->getErrors()) {
             foreach (array_keys($reported_errors) as $error_path) {
                 if (strpos($error_path, $element_path) === 0) {
                     return;
                 }
             }
         }
         // Only set errors if the element is visible.
         if (Element::isVisibleElement($element)) {
             $handles_multiple = $this->handlesMultipleValues();
             $violations_by_delta = array();
             foreach ($violations as $violation) {
                 // Separate violations by delta.
                 $property_path = explode('.', $violation->getPropertyPath());
                 $delta = array_shift($property_path);
                 $violations_by_delta[$delta][] = $violation;
                 $violation->arrayPropertyPath = $property_path;
             }
             /** @var \Symfony\Component\Validator\ConstraintViolationInterface[] $delta_violations */
             foreach ($violations_by_delta as $delta => $delta_violations) {
                 // Pass violations to the main element:
                 // - if this is a multiple-value widget,
                 // - or if the violations are at the ItemList level.
                 if ($handles_multiple || !is_numeric($delta)) {
                     $delta_element = $element;
                 } else {
                     $original_delta = $field_state['original_deltas'][$delta];
                     $delta_element = $element[$original_delta];
                 }
                 foreach ($delta_violations as $violation) {
                     // @todo: Pass $violation->arrayPropertyPath as property path.
                     $error_element = $this->errorElement($delta_element, $violation, $form, $form_state);
                     if ($error_element !== FALSE) {
                         $form_state->setError($error_element, $violation->getMessage());
                     }
                 }
             }
         }
     }
 }