* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\Extension\Core\EventListener\ResizeFormListener; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; class CollectionType extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { if ($options['allow_add'] && $options['prototype']) { $prototypeOptions = array_replace(array( 'required' => $options['required'], 'label' => $options['prototype_name'].'label__', ), $options['entry_options']); if (null !== $options['prototype_data']) { $prototypeOptions['data'] = $options['prototype_data']; } $prototype = $builder->create($options['prototype_name'], $options['entry_type'], $prototypeOptions); $builder->setAttribute('prototype', $prototype->getForm()); } $resizeListener = new ResizeFormListener( $options['entry_type'], $options['entry_options'], $options['allow_add'], $options['allow_delete'], $options['delete_empty'] ); $builder->addEventSubscriber($resizeListener); } /** * {@inheritdoc} */ public function buildView(FormView $view, FormInterface $form, array $options) { $view->vars = array_replace($view->vars, array( 'allow_add' => $options['allow_add'], 'allow_delete' => $options['allow_delete'], )); if ($form->getConfig()->hasAttribute('prototype')) { $prototype = $form->getConfig()->getAttribute('prototype'); $view->vars['prototype'] = $prototype->setParent($form)->createView($view); } } /** * {@inheritdoc} */ public function finishView(FormView $view, FormInterface $form, array $options) { if ($form->getConfig()->hasAttribute('prototype') && $view->vars['prototype']->vars['multipart']) { $view->vars['multipart'] = true; } } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $entryOptionsNormalizer = function (Options $options, $value) { $value['block_name'] = 'entry'; return $value; }; $resolver->setDefaults(array( 'allow_add' => false, 'allow_delete' => false, 'prototype' => true, 'prototype_data' => null, 'prototype_name' => '__name__', 'entry_type' => __NAMESPACE__.'\TextType', 'entry_options' => array(), 'delete_empty' => false, )); $resolver->setNormalizer('entry_options', $entryOptionsNormalizer); $resolver->setAllowedTypes('delete_empty', array('bool', 'callable')); } /** * {@inheritdoc} */ public function getBlockPrefix() { return 'collection'; } } __halt_compiler();----SIGNATURE:----fs10BYtA7oqmUyiAflQ/WJLOHQQ9yVEQrQeupksffb71V1fA4KPIrutQ1g+/vCh++tgoIbnu03WA3JNW3/NZUZEHHPkBnGTT9V4tbyg4y7XvRWECvbzcsyxjkOx36C8Q5r0rVazjooWD8q1oBuBVxOcmrmijSAWUkfyVnmyXknB4wfazRawPv8kQY+iSDOAXl+UJ03DMk1wKWnn4ENZhAu2B+vpBoJTERgnpLF/0c2pBYVHBg1M+ZnOqYaxzyqoeUs87NutXERCrbhIzefdOyJ07g8k2eIGynDqWNvS5f7qyM5qUpd495yZ/E6risIA5fQ6cVSgPqwlxiJOYMTOPCNSDVMxupIXWBWBF12hozTNt4gj03WFnE28R9v2PrG71dFrOrKrYYKSyU4epHkC4ye+AUmTrREIUeqZBi4288PQkUbtI+s+Lmfq4AGNHFrfdPxUK9nI8uMlIWTZOMxaDp+3fwU05qkp+6/qNMKQ0Pn8weGpHl5n/e/q+B6+WorNJItM0Mmpp1tpc01tB62/1dYRS4Jv8yRF8IyCurPU+IxrSVoy0bz4WUQEHPCjC2E522+1Ntar7Sa0Xeh+mtt+58dWI4xXNisLzYfdcsyDmY5Mij1zhq3Qw5gYkBrTR6vD7ZAO2v/NUkKX/eL6xsknOqqFzcEpKHlbxTfrrFKgFCzw=----ATTACHMENT:----NTE2ODA5MzkxNzY1NjUxOCAzNDQ0ODUzMjE1MjU0OTI3IDI5ODQzOTkyMjkzMzMyNw==