[Form] implement force append / prepend

This commit is contained in:
Grégoire Paris 2012-06-09 14:22:15 +02:00
parent 3bb7dc0bfa
commit f541a54770
5 changed files with 25 additions and 19 deletions

View File

@ -628,12 +628,12 @@
* The following methods in `FormBuilder` were deprecated and have a new * The following methods in `FormBuilder` were deprecated and have a new
equivalent: equivalent:
* `prependClientTransformer`: no new equivalent, consider using `addViewTransformer` * `prependClientTransformer`: `addViewTransformer`, with `true` as second argument
* `appendClientTransformer`: `addViewTransformer` * `appendClientTransformer`: `addViewTransformer`
* `getClientTransformers`: `getViewTransformers` * `getClientTransformers`: `getViewTransformers`
* `resetClientTransformers`: `resetViewTransformers` * `resetClientTransformers`: `resetViewTransformers`
* `prependNormTransformer`: `addModelTransformer` * `prependNormTransformer`: `addModelTransformer`
* `appendNormTransformer`: no new equivalent, consider using `addModelTransformer` * `appendNormTransformer`: `addModelTransformer`, with `true` as second argument
* `getNormTransformers`: `getModelTransformers` * `getNormTransformers`: `getModelTransformers`
* `resetNormTransformers`: `resetModelTransformers` * `resetNormTransformers`: `resetModelTransformers`
@ -643,7 +643,7 @@
Before: Before:
``` ```
$builder->prependClientTransformer(new MyTransformer()); $builder->appendClientTransformer(new MyTransformer());
``` ```
After: After:

View File

@ -39,7 +39,7 @@ abstract class DoctrineType extends AbstractType
if ($options['multiple']) { if ($options['multiple']) {
$builder $builder
->addEventSubscriber(new MergeDoctrineCollectionListener()) ->addEventSubscriber(new MergeDoctrineCollectionListener())
->prependClientTransformer(new CollectionToArrayTransformer()) ->addViewTransformer(new CollectionToArrayTransformer(), true)
; ;
} }
} }

View File

@ -28,7 +28,7 @@ class ModelType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
if ($options['multiple']) { if ($options['multiple']) {
$builder->prependClientTransformer(new CollectionToArrayTransformer()); $builder->addViewTransformer(new CollectionToArrayTransformer(), true);
} }
} }

View File

@ -179,9 +179,13 @@ class FormConfig implements FormConfigEditorInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function addViewTransformer(DataTransformerInterface $viewTransformer) public function addViewTransformer(DataTransformerInterface $viewTransformer, $forcePrepend = false)
{ {
$this->viewTransformers[] = $viewTransformer; if ($forcePrepend) {
array_unshift($this->viewTransformers, $viewTransformer);
} else {
$this->viewTransformers[] = $viewTransformer;
}
return $this; return $this;
} }
@ -222,9 +226,7 @@ class FormConfig implements FormConfigEditorInterface
*/ */
public function prependClientTransformer(DataTransformerInterface $viewTransformer) public function prependClientTransformer(DataTransformerInterface $viewTransformer)
{ {
array_unshift($this->viewTransformers, $viewTransformer); return $this->addViewTransformer($viewTransformer, true);
return $this;
} }
/** /**
@ -243,9 +245,13 @@ class FormConfig implements FormConfigEditorInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function addModelTransformer(DataTransformerInterface $modelTransformer) public function addModelTransformer(DataTransformerInterface $modelTransformer, $forceAppend = false)
{ {
array_unshift($this->modelTransformers, $modelTransformer); if ($forceAppend) {
$this->modelTransformers[] = $modelTransformer;
} else {
array_unshift($this->modelTransformers, $modelTransformer);
}
return $this; return $this;
} }
@ -271,9 +277,7 @@ class FormConfig implements FormConfigEditorInterface
*/ */
public function appendNormTransformer(DataTransformerInterface $modelTransformer) public function appendNormTransformer(DataTransformerInterface $modelTransformer)
{ {
$this->modelTransformers[] = $modelTransformer; return $this->addModelTransformer($modelTransformer, true);
return $this;
} }
/** /**

View File

@ -52,7 +52,7 @@ interface FormConfigEditorInterface extends FormConfigInterface
function addValidator(FormValidatorInterface $validator); function addValidator(FormValidatorInterface $validator);
/** /**
* Appends a transformer to the view transformer chain. * Appends / prepends a transformer to the view transformer chain.
* *
* The transform method of the transformer is used to convert data from the * The transform method of the transformer is used to convert data from the
* normalized to the view format. * normalized to the view format.
@ -60,10 +60,11 @@ interface FormConfigEditorInterface extends FormConfigInterface
* view to the normalized format. * view to the normalized format.
* *
* @param DataTransformerInterface $viewTransformer * @param DataTransformerInterface $viewTransformer
* @param Boolean $forcePrepend if set to true, prepend instead of appending
* *
* @return self The configuration object. * @return self The configuration object.
*/ */
function addViewTransformer(DataTransformerInterface $viewTransformer); function addViewTransformer(DataTransformerInterface $viewTransformer, $forcePrepend = false);
/** /**
* Clears the view transformers. * Clears the view transformers.
@ -73,7 +74,7 @@ interface FormConfigEditorInterface extends FormConfigInterface
function resetViewTransformers(); function resetViewTransformers();
/** /**
* Prepends a transformer to the normalization transformer chain. * Prepends / appends a transformer to the normalization transformer chain.
* *
* The transform method of the transformer is used to convert data from the * The transform method of the transformer is used to convert data from the
* model to the normalized format. * model to the normalized format.
@ -81,10 +82,11 @@ interface FormConfigEditorInterface extends FormConfigInterface
* normalized to the model format. * normalized to the model format.
* *
* @param DataTransformerInterface $modelTransformer * @param DataTransformerInterface $modelTransformer
* @param Boolean $forceAppend if set to true, append instead of prepending
* *
* @return self The configuration object. * @return self The configuration object.
*/ */
function addModelTransformer(DataTransformerInterface $modelTransformer); function addModelTransformer(DataTransformerInterface $modelTransformer, $forceAppend = false);
/** /**
* Clears the normalization transformers. * Clears the normalization transformers.