* * 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\FormEvent; use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; class FileType extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { // Ensure that submitted data is always an uploaded file or an array of some $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($options) { $form = $event->getForm(); $requestHandler = $form->getConfig()->getRequestHandler(); if ($options['multiple']) { $data = array(); $files = $event->getData(); if (!is_array($files)) { $files = array(); } foreach ($files as $file) { if ($requestHandler->isFileUpload($file)) { $data[] = $file; } } // Since the array is never considered empty in the view data format // on submission, we need to evaluate the configured empty data here if (array() === $data) { $emptyData = $form->getConfig()->getEmptyData(); $data = $emptyData instanceof \Closure ? $emptyData($form, $data) : $emptyData; } $event->setData($data); } elseif (!$requestHandler->isFileUpload($event->getData())) { $event->setData(null); } }); } /** * {@inheritdoc} */ public function buildView(FormView $view, FormInterface $form, array $options) { if ($options['multiple']) { $view->vars['full_name'] .= '[]'; $view->vars['attr']['multiple'] = 'multiple'; } $view->vars = array_replace($view->vars, array( 'type' => 'file', 'value' => '', )); } /** * {@inheritdoc} */ public function finishView(FormView $view, FormInterface $form, array $options) { $view->vars['multipart'] = true; } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $dataClass = null; if (class_exists('Symfony\Component\HttpFoundation\File\File')) { $dataClass = function (Options $options) { return $options['multiple'] ? null : 'Symfony\Component\HttpFoundation\File\File'; }; } $emptyData = function (Options $options) { return $options['multiple'] ? array() : null; }; $resolver->setDefaults(array( 'compound' => false, 'data_class' => $dataClass, 'empty_data' => $emptyData, 'multiple' => false, )); } /** * {@inheritdoc} */ public function getBlockPrefix() { return 'file'; } } __halt_compiler();----SIGNATURE:----q4cIx0EOAkPP2CCmPSZ9wdabXElH5Fb3z4oY1BjU8ynGhcINsgTIkQ4VBGEguyb8CAyu7NVRxwA8kbHlcvFaX00dGk/vEB7v8/VvJTqDWulvPkzW7f52vfrU5GmsRd6GsE5g5uKBU2RrV+KbB7tdsCNwh2L/16Eq6fdwvfAYPtMf4DG86EUghp2LdGw0ipXf8dkCxrloEfFaT0R+qzsJr7M7X0ttk9Y64MAehhCv2GfcNYWQp/Fo6P8SPXNDGIZ9tWz5gnaiSQ9b6Wz7auYDt/edA5gIe4JxMgr2lAwHe/u8lJRpdauxfv6/Aq1WTbNOHeTk/vNuwKNWqWtX/iutDIy9MP5JmhZj67jp1oAmEeShFXCFFUDovjJnbi5Ajl5O1YHNGLoTKXlDvs50L4s1f2NF725Nu2JKtTu50cUdSw3i2Cqa3DhwMGmoXJNKffphFCUtHnBJ5ZQdGmZNNLPUZNHkaysg1GA34zOnSMJMrgva7XdmhownG9y9+A8y3bSI27ObHztUn/bdtOaP6QgApqyYQWr5ndaF9Snj40IX2ha0/p6n8UDqKAv5k/yAuakzPZdFkigYbkc+FQyPHL/VyQC9BQwq6tIyRb9PBwvOQaPYytFuVwzqFD1a/IplAFB8+yvVt0yjNguipn55rK1FTzwOet3GHXfAAyBuRDkbfTg=----ATTACHMENT:----NDYyMTE4NzEyNTczNzU0NiA2Njc0ODQxOTgwNTQ3ODQwIDIxODUxNDIwMjIyMzcyNzY=