/** * 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; }
/** * Makes this field to a multiple. * * @param Field $field The field object * * @return Field */ public function multiple(Field $proto) { $resizer = new MultipleResizeListener(); $name = $proto->getInternalName(); $disp = new EventDispatcher(); $field = new Field($name, $disp, $proto->getExtensions()); $field->setOption('prototype', $proto); $disp->addListener(Events::BIND, [$resizer, 'bind']); $disp->addListener(Events::FILL, [$resizer, 'fill']); return $field; }
/** * Clones a field. * * @param Field $field * * @return Field The cloned field */ protected function cloneField(Field $field) { $clone = clone $field; $clone->setChildren(array_map(function ($child) { return $this->cloneField($child); }, $field->getChildren())); $clone->setConstraints(array_map(function ($constraint) { return clone $constraint; }, $field->getConstraints())); return $clone; }
/** * Gets the name for form view. * * @param Field $field The field object * @param boolean $fst This flag is used to find out which field was * called first. * * @return string */ public function getName(Field $field, $fst = true) { $parent = $field->getParent(); if (null !== $parent && '' !== $parent->getName(false)) { return $parent->getName(false) . '[' . $field->getInternalName() . ']'; } if ($fst && $field->hasOption('prototype')) { return $field->getInternalName() . '[]'; } return $field->getInternalName(); }
/** * Adds a constraint to the field. * * @param Field $field The field object * @param string $message The error message * @param callable $check The check method * * @return Field */ public function verifying(Field $field, $message, callable $func) { $field->addConstraint(new \Formz\Constraint\Callback($message, $func)); return $field; }
/** * Checks if the field value is boolean. * * @param Field $field The form field * @param string message The error message * * @return Field */ public function boolean(Field $field, $message = 'formz.error.boolean') { $field->addConstraint(new \Formz\Constraint\Boolean($message)); $field->transform(new \Formz\Transformer\Boolean()); return $field; }
/** * Allows to bind the form with Symfony's request object. * * @param Field $field The form field * @param Request $request The symfony request object * * @return Field */ public function bindFromRequest(Field $field, Request $request) { $field->bind($request->request->all()); return $field; }
/** * Adds a child field. * * @param Field $field The field obejct */ public function addChild(Field $child) { $this->children[$child->getInternalName()] = $child; }