Exemplo n.º 1
0
 public function __construct(FormConfigInterface $config)
 {
     if ($config->getCompound() && !$config->getDataMapper()) {
         throw new LogicException('Compound forms need a data mapper');
     }
     if ($config->getInheritData()) {
         $this->defaultDataSet = true;
     }
     $this->config = $config;
     $this->children = new OrderedHashMap();
 }
Exemplo n.º 2
0
 /**
  * Transforms the value if a value transformer is set.
  *
  * @param mixed $value The value to transform
  *
  * @return mixed
  */
 private function normToView($value)
 {
     // Scalar values should  be converted to strings to
     // facilitate differentiation between empty ("") and zero (0).
     // Only do this for simple forms, as the resulting value in
     // compound forms is passed to the data mapper and thus should
     // not be converted to a string before.
     if (!$this->config->getViewTransformers() && !$this->config->getCompound()) {
         return null === $value || is_scalar($value) ? (string) $value : $value;
     }
     foreach ($this->config->getViewTransformers() as $transformer) {
         $value = $transformer->transform($value);
     }
     return $value;
 }
Exemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function add(FormInterface $child)
 {
     if ($this->bound) {
         throw new AlreadyBoundException('You cannot add children to a bound form');
     }
     if (!$this->config->getCompound()) {
         throw new FormException('You cannot add children to a simple form. Maybe you should set the option "compound" to true?');
     }
     $this->children[$child->getName()] = $child;
     $child->setParent($this);
     if ($this->config->getDataMapper()) {
         $this->config->getDataMapper()->mapDataToForms($this->getViewData(), array($child));
     }
     return $this;
 }
Exemplo n.º 4
0
 /**
  * Transforms the value if a value transformer is set.
  *
  * @param mixed $value The value to transform
  *
  * @return mixed
  *
  * @throws TransformationFailedException If the value cannot be transformed to "view" format
  */
 private function normToView($value)
 {
     // Scalar values should  be converted to strings to
     // facilitate differentiation between empty ("") and zero (0).
     // Only do this for simple forms, as the resulting value in
     // compound forms is passed to the data mapper and thus should
     // not be converted to a string before.
     if (!$this->config->getViewTransformers() && !$this->config->getCompound()) {
         return null === $value || is_scalar($value) ? (string) $value : $value;
     }
     try {
         foreach ($this->config->getViewTransformers() as $transformer) {
             $value = $transformer->transform($value);
         }
     } catch (TransformationFailedException $exception) {
         throw new TransformationFailedException('Unable to transform value for property path "' . $this->getPropertyPath() . '": ' . $exception->getMessage(), $exception->getCode(), $exception);
     }
     return $value;
 }
Exemplo n.º 5
0
 /**
  * Creates an unmodifiable copy of a given configuration.
  *
  * @param  FormConfigInterface $config The configuration to copy.
  */
 public function __construct(FormConfigInterface $config)
 {
     $dispatcher = $config->getEventDispatcher();
     if (!$dispatcher instanceof UnmodifiableEventDispatcher) {
         $dispatcher = new UnmodifiableEventDispatcher($dispatcher);
     }
     $this->dispatcher = $dispatcher;
     $this->name = $config->getName();
     $this->propertyPath = $config->getPropertyPath();
     $this->mapped = $config->getMapped();
     $this->byReference = $config->getByReference();
     $this->virtual = $config->getVirtual();
     $this->compound = $config->getCompound();
     $this->types = $config->getTypes();
     $this->viewTransformers = $config->getViewTransformers();
     $this->modelTransformers = $config->getModelTransformers();
     $this->dataMapper = $config->getDataMapper();
     $this->validators = $config->getValidators();
     $this->required = $config->getRequired();
     $this->disabled = $config->getDisabled();
     $this->errorBubbling = $config->getErrorBubbling();
     $this->emptyData = $config->getEmptyData();
     $this->attributes = $config->getAttributes();
     $this->data = $config->getData();
     $this->dataClass = $config->getDataClass();
     $this->options = $config->getOptions();
 }