Parcourir la source

[Form] Fixed various bugs

Bernhard Schussek il y a 14 ans
Parent
commit
c6e9fd97b6

+ 3 - 5
src/Symfony/Bundle/TwigBundle/Resources/views/form.html.twig

@@ -205,11 +205,9 @@
 
 {% block file__widget %}
 {% spaceless %}
-    {% set group = field %}
-    {% set field = group.file %}
-    <input type="file" {{ block('attributes') }} />
-    {{ group.token.renderer.widget }}
-    {{ group.original_name.renderer.widget }}
+    {{ field.file.renderer.widget }}
+    {{ field.token.renderer.widget }}
+    {{ field.name.renderer.widget }}
 {% endspaceless %}
 {% endblock file__widget %}
 

+ 7 - 0
src/Symfony/Component/Form/DataProcessor/FileUploader.php

@@ -35,6 +35,13 @@ class FileUploader implements DataProcessorInterface
 
     public function processData($data)
     {
+        // TESTME
+        $data = array_merge(array(
+            'file' => '',
+            'token' => '',
+            'name' => '',
+        ), $data);
+
         // Newly uploaded file
         if ($data['file'] instanceof UploadedFile && $data['file']->isValid()) {
             $data['token'] = (string)rand(100000, 999999);

+ 1 - 1
src/Symfony/Component/Form/FormFactory.php

@@ -904,7 +904,7 @@ class FormFactory
         return $field
             ->setDataPreprocessor(new FileUploader($field, $this->storage))
             ->setData(null) // FIXME
-            ->add($this->getField('file', array('type' => 'file')))
+            ->add($this->getField('file')->setRendererVar('type', 'file'))
             ->add($this->getHiddenField('token'))
             ->add($this->getHiddenField('name'));
     }

+ 1 - 1
src/Symfony/Component/HttpFoundation/File/SessionBasedTemporaryStorage.php

@@ -22,7 +22,7 @@ class SessionBasedTemporaryStorage extends TemporaryStorage
 {
     public function __construct(Session $session, $secret, $nestingLevels = 3, $directory = null)
     {
-        parent::__construct($directory, $secret, $nestingLevels);
+        parent::__construct($secret, $nestingLevels, $directory);
 
         $this->session = $session;
     }