Sfoglia il codice sorgente

[Form] Moved logic of Field::isMultipart() to rendering layer

Bernhard Schussek 14 anni fa
parent
commit
ffa5bd264a

+ 1 - 5
src/Symfony/Component/Form/Config/FieldConfig.php

@@ -42,11 +42,7 @@ class FieldConfig extends AbstractFieldConfig
             ->setNormalizationTransformer($options['normalization_transformer'])
             ->setData($options['data'])
             ->setRenderer(new DefaultRenderer($field, $this->theme, $options['template']))
-            ->addRendererPlugin(new FieldPlugin())
-            ->setRendererVar('class', null)
-            ->setRendererVar('max_length', null)
-            ->setRendererVar('size', null)
-            ->setRendererVar('label', ucfirst(strtolower(str_replace('_', ' ', $field->getName()))));
+            ->addRendererPlugin(new FieldPlugin());
 
         if ($options['trim']) {
             $field->addEventSubscriber(new TrimListener());

+ 0 - 8
src/Symfony/Component/Form/Field.php

@@ -186,14 +186,6 @@ class Field implements FieldInterface
         return true;
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public function isMultipart()
-    {
-        return false;
-    }
-
     /**
      * {@inheritDoc}
      */

+ 0 - 7
src/Symfony/Component/Form/FieldInterface.php

@@ -120,13 +120,6 @@ interface FieldInterface
      */
     function isValid();
 
-    /**
-     * Returns whether the field requires a multipart form.
-     *
-     * @return Boolean
-     */
-    function isMultipart();
-
     /**
      * Returns whether the field is required to be filled out.
      *

+ 0 - 16
src/Symfony/Component/Form/Form.php

@@ -476,22 +476,6 @@ class Form extends Field implements \IteratorAggregate, FormInterface, EventSubs
         parent::addError($error);
     }
 
-    /**
-     * Returns whether the field requires a multipart form.
-     *
-     * @return Boolean
-     */
-    public function isMultipart()
-    {
-        foreach ($this->fields as $field) {
-            if ($field->isMultipart()) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
     /**
      * Returns true if the field exists (implements the \ArrayAccess interface).
      *

+ 5 - 0
src/Symfony/Component/Form/Renderer/DefaultRenderer.php

@@ -158,6 +158,11 @@ class DefaultRenderer implements RendererInterface, \ArrayAccess
         return $this->render('label', $vars);
     }
 
+    public function getEnctype()
+    {
+        return $this->render('enctype', $vars);
+    }
+
     protected function render($block, array $vars = array())
     {
         $this->initialize();

+ 1 - 0
src/Symfony/Component/Form/Renderer/Plugin/FieldPlugin.php

@@ -51,5 +51,6 @@ class FieldPlugin implements RendererPluginInterface
         $renderer->setVar('max_length', null);
         $renderer->setVar('size', null);
         $renderer->setVar('label', ucfirst(strtolower(str_replace('_', ' ', $field->getName()))));
+        $renderer->setVar('multipart', false);
     }
 }

+ 4 - 1
src/Symfony/Component/Form/Renderer/Plugin/FormPlugin.php

@@ -25,11 +25,14 @@ class FormPlugin implements RendererPluginInterface
         }
 
         $fields = array();
+        $multipart = false;
 
-        foreach ($this->form as $name => $field) {
+        foreach ($form as $name => $field) {
             $fields[$name] = $field->getRenderer();
+            $multipart = $multipart || $fields[$name]->getVar('multipart');
         }
 
         $renderer->setVar('fields', $fields);
+        $renderer->setVar('multipart', $multipart);
     }
 }

+ 0 - 18
tests/Symfony/Tests/Component/Form/FormTest.php

@@ -1005,24 +1005,6 @@ class FormTest extends TestCase
         $this->assertEquals($object, $form->getData());
     }
 
-    public function testIsMultipartIfAnyFieldIsMultipart()
-    {
-        $form = $this->factory->getInstance('form', 'author');
-        $form->add($this->createMultipartMockField('firstName'));
-        $form->add($this->createNonMultipartMockField('lastName'));
-
-        $this->assertTrue($form->isMultipart());
-    }
-
-    public function testIsNotMultipartIfNoFieldIsMultipart()
-    {
-        $form = $this->factory->getInstance('form', 'author');
-        $form->add($this->createNonMultipartMockField('firstName'));
-        $form->add($this->createNonMultipartMockField('lastName'));
-
-        $this->assertFalse($form->isMultipart());
-    }
-
     public function testSubmitWithoutPriorSetData()
     {
         return; // TODO