/** * {@inheritDoc} */ public function renderErrors(FieldInterface $field) { $html = ''; if ($field->hasErrors()) { $html .= "<ul>\n"; foreach ($field->getErrors() as $error) { $html .= "<li>" . $error . "</li>\n"; } $html .= "</ul>\n"; } return $html; }
/** * Adds a new field to this group. A field must have a unique name within * the group. Otherwise the existing field is overwritten. * * If you add a nested group, this group should also be represented in the * object hierarchy. If you want to add a group that operates on the same * hierarchy level, use merge(). * * <code> * class Entity * { * public $location; * } * * class Location * { * public $longitude; * public $latitude; * } * * $entity = new Entity(); * $entity->location = new Location(); * * $form = new Form('entity', $entity, $validator); * * $locationGroup = new FieldGroup('location'); * $locationGroup->add(new TextField('longitude')); * $locationGroup->add(new TextField('latitude')); * * $form->add($locationGroup); * </code> * * @param FieldInterface $field */ public function add(FieldInterface $field) { if ($this->isBound()) { throw new AlreadyBoundException('You cannot add fields after binding a form'); } $this->fields[$field->getKey()] = $field; $field->setParent($this); $data = $this->getTransformedData(); // if the property "data" is NULL, getTransformedData() returns an empty // string if (!empty($data)) { $field->updateFromProperty($data); } return $field; }
/** * Repeats the given field twice to verify the user's input * * @param FieldInterface $innerField */ public function __construct(FieldInterface $innerField, array $options = array()) { $this->prototype = $innerField; parent::__construct($innerField->getKey(), $options); }
/** * Renders the widget data of the given field * * @param FieldInterface $field The field to render the data for */ public function renderData(FieldInterface $field) { return $field->getData(); }
/** * Renders the label of the given field * * @param FieldInterface $field The field to render the label for * @param array $params Additional variables passed to the template */ public function renderLabel(FieldInterface $field, $label = null, array $parameters = array()) { if (null === $this->templates) { $this->templates = $this->resolveResources($this->resources); } return $this->templates['label']->getBlock('label', array('field' => $field, 'params' => $parameters, 'label' => null !== $label ? $label : ucfirst(strtolower(str_replace('_', ' ', $field->getKey()))))); }
public function renderChoices(FieldInterface $field) { return $this->generator->choices($field->getPreferredChoices(), $field->getOtherChoices(), $field->getEmptyValue(), $field->getSelected()); }
/** * Adds a new field to this group. A field must have a unique name within * the group. Otherwise the existing field is overwritten. * * If you add a nested group, this group should also be represented in the * object hierarchy. If you want to add a group that operates on the same * hierarchy level, use merge(). * * <code> * class Entity * { * public $location; * } * * class Location * { * public $longitude; * public $latitude; * } * * $entity = new Entity(); * $entity->location = new Location(); * * $form = new Form('entity', $entity, $validator); * * $locationGroup = new FieldGroup('location'); * $locationGroup->add(new TextField('longitude')); * $locationGroup->add(new TextField('latitude')); * * $form->add($locationGroup); * </code> * * @param FieldInterface $field */ public function add(FieldInterface $field) { if ($this->isBound()) { throw new AlreadyBoundException('You cannot add fields after binding a form'); } $this->fields[$field->getKey()] = $field; $field->setParent($this); $field->setLocale($this->locale); $field->setGenerator($this->generator); if ($this->translator !== null) { $field->setTranslator($this->translator); } $data = $this->getTransformedData(); // if the property "data" is NULL, getTransformedData() returns an empty // string if (!empty($data) && $field->getPropertyPath() !== null) { $field->updateFromObject($data); } return $field; }