Example #1
0
 /**
  * Makes this field to an optional.
  *
  * @param Field $field The field object
  *
  * @return Field
  */
 public function optional(Field $field)
 {
     $disp = $field->getDispatcher();
     $disp->addListener(Events::BEFORE_TRANSFORM, function (Event $event) {
         if (null === $event->getInput()) {
             $event->setData(null);
         }
     });
     return $field;
 }
Example #2
0
 /**
  * Check if this field is empty or not.
  *
  * @param Field  $field   The form field
  * @param string $message The error message
  *
  * @return Field
  */
 public function required(Field $field, $message = 'formz.error.required')
 {
     $field->addConstraint(new \Formz\Constraint\Required($message));
     $disp = $field->getDispatcher();
     $disp->addListener(Events::BEFORE_TRANSFORM, function (Event $event) {
         foreach ($event->getField()->getConstraints() as $cons) {
             $cons->validate($event->getField(), $event->getInput());
         }
     });
     return $field;
 }
Example #3
0
 /**
  * {@inheritdoc}
  */
 public function initialize(Field $field)
 {
     // Activates annotation validation
     if (null !== $this->validator) {
         $disp = $field->getDispatcher();
         $disp->addListener(Events::APPLIED, function (Event $event) {
             $data = $event->getData();
             if (!is_object($data)) {
                 return;
             }
             $violations = $this->validator->validate($data);
             foreach ($violations as $violation) {
                 $field = $event->getField();
                 if ($field->hasChild($violation->getPropertyPath())) {
                     $field = $field->getChild($violation->getPropertyPath());
                 }
                 $field->addError(new Error($violation->getPropertyPath(), $violation->getMessage()));
             }
         });
     }
 }