From b4b5d63660cd1509c39a4458b83c475db0dabfb8 Mon Sep 17 00:00:00 2001 From: Jules Pietri Date: Fri, 11 Dec 2015 03:19:25 +0100 Subject: [PATCH] [Form] fix #15544 when a collection type attribute "required" is false, "prototype" should too --- .../Extension/Core/Type/CollectionType.php | 1 + .../Core/Type/CollectionTypeTest.php | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php index 0688bb19df..d739a3513d 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php @@ -28,6 +28,7 @@ class CollectionType extends AbstractType { if ($options['allow_add'] && $options['prototype']) { $prototype = $builder->create($options['prototype_name'], $options['type'], array_replace(array( + 'required' => $options['required'], 'label' => $options['prototype_name'].'label__', ), $options['options'])); $builder->setAttribute('prototype', $prototype->getForm()); diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/CollectionTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/CollectionTypeTest.php index 6f88a92cb9..6a5775ea84 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/CollectionTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/CollectionTypeTest.php @@ -195,4 +195,30 @@ class CollectionTypeTest extends \Symfony\Component\Form\Test\TypeTestCase $this->assertSame('__test__label__', $form->createView()->vars['prototype']->vars['label']); } + + public function testPrototypeDefaultRequired() + { + $form = $this->factory->create('collection', array(), array( + 'type' => 'file', + 'allow_add' => true, + 'prototype' => true, + 'prototype_name' => '__test__', + )); + + $this->assertTrue($form->createView()->vars['prototype']->vars['required']); + } + + public function testPrototypeSetNotRequired() + { + $form = $this->factory->create('collection', array(), array( + 'type' => 'file', + 'allow_add' => true, + 'prototype' => true, + 'prototype_name' => '__test__', + 'required' => false, + )); + + $this->assertFalse($form->createView()->vars['required'], 'collection is not required'); + $this->assertFalse($form->createView()->vars['prototype']->vars['required'], '"prototype" should not be required'); + } }