From 4e3d85f6a850fb3a9b401a1e6a43a0c86ff365cf Mon Sep 17 00:00:00 2001 From: Ahmed Mohamed Date: Sat, 26 Apr 2014 22:29:22 +0200 Subject: [PATCH 1/2] Add option override view transformer in Select2Type --- Form/Type/Select2Type.php | 3 ++- Tests/Form/Type/Select2TypeTest.php | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Form/Type/Select2Type.php b/Form/Type/Select2Type.php index 0dad711..4261a34 100644 --- a/Form/Type/Select2Type.php +++ b/Form/Type/Select2Type.php @@ -60,7 +60,7 @@ public function __construct(DataTransformerInterface $transformer, $widget) */ public function buildForm(FormBuilderInterface $builder, array $options) { - if ($this->widget === 'ajax' && $options['multiple'] === true){ + if ($options['apply_view_transformer'] && $this->widget === 'ajax' && $options['multiple'] === true) { $builder->addViewTransformer($this->transformer); } } @@ -95,6 +95,7 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) ); $defaults = array( + 'apply_view_transformer' => true, 'multiple' => false, 'expanded' => false, 'empty_value' => 'select.empty_value', diff --git a/Tests/Form/Type/Select2TypeTest.php b/Tests/Form/Type/Select2TypeTest.php index 688e421..536e988 100644 --- a/Tests/Form/Type/Select2TypeTest.php +++ b/Tests/Form/Type/Select2TypeTest.php @@ -22,6 +22,28 @@ public function testDefaultConfigs() ), $configs); } + public function testAjaxMultipleWithoutViewTransformer() + { + $form = $this->factory->create( + 'thrace_select2_ajax', + null, + array( + 'multiple' => true, + 'configs' => array('ajax' => array(),'apply_view_transformer' => false) + ) + ); + $view = $form->createView(); + $configs = $view->vars['configs']; + $this->assertSame(array( + 'width' => '300px', + 'allowClear' => true, + 'ajax' => array (), + 'apply_view_transformer' => false, + 'placeholder' => 'select.empty_value', + 'multiple' => true, + ), $configs); + } + public function testAjaxAndMultiple() { $form = $this->factory->create('thrace_select2_ajax', null, array( From 5c607354beff0c41d77ddf2eba97d32d77156fe0 Mon Sep 17 00:00:00 2001 From: Ahmed Mohamed Date: Sat, 26 Apr 2014 22:59:22 +0200 Subject: [PATCH 2/2] Update Select2 doc --- Resources/doc/select2.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/doc/select2.md b/Resources/doc/select2.md index 7dda1d5..7e14793 100644 --- a/Resources/doc/select2.md +++ b/Resources/doc/select2.md @@ -54,6 +54,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder // ..... ->add('name', 'thrace_select2_ajax', array( + 'apply_view_transformer' => true, 'label' => 'Select', 'multiple' => false, 'empty_value' => 'Select option', @@ -80,6 +81,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ; } ``` +**Note:** *apply_view_transformer* option enables \Thrace\FormBundle\Form\DataTransformer\ArrayToStringTransformer as the default transformer -only if **multiple** is set true-, setting it **false** allows you to use your own transformer And the array structure: