/** * @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); } }
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); }
/** * @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); } }
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"; }
/** * 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; }
/** * {@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()); } } } } } }