* * 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:----SIFBuT08Kh5MUbNc1qOaURWmYmCiHIvj+CC5Xmti9MJ1rp9l0s7M093DkuuvD9Qwy9v1zS93Y8WUxHpLBbmz/z52OkYQb6nu+SV2YWghg6MQ+T7Oggv/mFodd0oYFQ1saw9/t3QnSinsu0nNC4EDX3jIDF5/tuDNqCsV2P6JXNom0jvbrrXRLoWC5mj6GAecJhWvYPmVbHc55+9N25dVoyhP0zDDNRONlq6Pri/2NcHm0nR4CNO5Sff/poc33+/f/aBn8HXKv1/5HEFWNRIJyuaBnggiOg2xfwu5X7iS47iD2xZJsXon0mhOET0Sd48AiD6xHmGD19Ejf8FNn2LLPJnDmaGkFwxzU3r0o/LIPWEWBR+tr/VOjNmxC9M5MpWTHJt7/ArUhw0jPY5ksSjfw8q2kmpm3sQtnKaPGTtRdjxJbPrxWDxWZ7d3YZF/pVjR2MME8IhFMbrIqUJGclhWfkaTOzIc00+XilotzvDanC/8e9pZx5g+ed4DK5bhImaSzYQbKCKjnf+6/5rnfFitVPtRubQRaAWjr5DpUB5izWi0U6bBkm8uVjJhrY/i8URVKPULx4hA+J4aPObx4b9oPBvZcE0QkRAHDfBCo7ja7EoGKjLTpc53smpNBj+2z/yl6Z4GldGm1eTJ3FTETUB3mthOFJrTiRMQn6qsXc5Glzo=----ATTACHMENT:----NDc2MzI4MDE2NTA5ODI4OCA1MzQxNzk0NjA3Mzk2MTQxIDIzNjA4OTk0NDQxNDkzNDM=