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