diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php index 599aa457b7..32001e81bd 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php @@ -29,7 +29,9 @@ class CollectionType extends AbstractType if ($options['allow_add'] && $options['prototype']) { $prototype = $builder->create($options['prototype_name'], $options['type'], array_replace(array( 'label' => $options['prototype_name'].'label__', - ), $options['options'])); + ), $options['options'], array( + 'data' => $options['prototype_data'], + ))); $builder->setAttribute('prototype', $prototype->getForm()); } @@ -84,6 +86,7 @@ class CollectionType extends AbstractType 'allow_add' => false, 'allow_delete' => false, 'prototype' => true, + 'prototype_data' => null, 'prototype_name' => '__name__', 'type' => 'text', 'options' => array(), 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 589ccdbb7a..ef00ea25bd 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/CollectionTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/CollectionTypeTest.php @@ -274,4 +274,19 @@ class CollectionTypeTest extends \Symfony\Component\Form\Test\TypeTestCase $this->assertSame('__test__label__', $form->createView()->vars['prototype']->vars['label']); } + + public function testPrototypeData() + { + $form = $this->factory->create('collection', array(), array( + 'type' => 'text', + 'allow_add' => true, + 'prototype' => true, + 'prototype_data' => 'foo', + 'options' => array( + 'data' => 'bar', + ), + )); + + $this->assertSame('foo', $form->createView()->vars['prototype']->vars['value']); + } }