瀏覽代碼

[Form] Simplified ArrayTypeLoader and used it as base class of DefaultTypeLoader

Bernhard Schussek 14 年之前
父節點
當前提交
1ff6906608

+ 1 - 6
src/Symfony/Component/Form/Type/Loader/ArrayTypeLoader.php

@@ -25,15 +25,10 @@ class ArrayTypeLoader implements TypeLoaderInterface
     public function __construct(array $types)
     {
         foreach ($types as $type) {
-            $this->addType($type);
+            $this->types[$type->getName()] = $type;
         }
     }
 
-    private function addType(FormTypeInterface $type)
-    {
-        $this->types[$type->getName()] = $type;
-    }
-
     public function getType($name)
     {
         return $this->types[$name];

+ 32 - 43
src/Symfony/Component/Form/Type/Loader/DefaultTypeLoader.php

@@ -20,59 +20,48 @@ use Symfony\Component\Validator\ValidatorInterface;
 use Symfony\Component\HttpFoundation\File\TemporaryStorage;
 use Doctrine\ORM\EntityManager;
 
-class DefaultTypeLoader implements TypeLoaderInterface
+class DefaultTypeLoader extends ArrayTypeLoader
 {
-    private $types = array();
-
     public function __construct(
             FormThemeFactoryInterface $themeFactory, $template = null, ValidatorInterface $validator = null,
             CsrfProviderInterface $csrfProvider = null, TemporaryStorage $storage = null)
     {
-        $this->addType(new Type\FieldType($validator, $themeFactory, $template));
-        $this->addType(new Type\FormType());
-        $this->addType(new Type\BirthdayType());
-        $this->addType(new Type\CheckboxType());
-        $this->addType(new Type\ChoiceType());
-        $this->addType(new Type\CollectionType());
-        $this->addType(new Type\CountryType());
+        $types = array(
+            new Type\FieldType($validator, $themeFactory, $template),
+            new Type\FormType(),
+            new Type\BirthdayType(),
+            new Type\CheckboxType(),
+            new Type\ChoiceType(),
+            new Type\CollectionType(),
+            new Type\CountryType(),
+            new Type\DateType(),
+            new Type\DateTimeType(),
+            new Type\HiddenType(),
+            new Type\IntegerType(),
+            new Type\LanguageType(),
+            new Type\LocaleType(),
+            new Type\MoneyType(),
+            new Type\NumberType(),
+            new Type\PasswordType(),
+            new Type\PercentType(),
+            new Type\RadioType(),
+            new Type\RepeatedType(),
+            new Type\TextareaType(),
+            new Type\TextType(),
+            new Type\TimeType(),
+            new Type\TimezoneType(),
+            new Type\UrlType(),
+        );
+
         if ($csrfProvider) {
             // TODO Move to a Symfony\Bridge\FormSecurity
-            $this->addType(new Type\CsrfType($csrfProvider));
+            $types[] = new Type\CsrfType($csrfProvider);
         }
-        $this->addType(new Type\DateType());
-        $this->addType(new Type\DateTimeType());
+
         if ($storage) {
-            $this->addType(new Type\FileType($storage));
+            $types[] = new Type\FileType($storage);
         }
-        $this->addType(new Type\HiddenType());
-        $this->addType(new Type\IntegerType());
-        $this->addType(new Type\LanguageType());
-        $this->addType(new Type\LocaleType());
-        $this->addType(new Type\MoneyType());
-        $this->addType(new Type\NumberType());
-        $this->addType(new Type\PasswordType());
-        $this->addType(new Type\PercentType());
-        $this->addType(new Type\RadioType());
-        $this->addType(new Type\RepeatedType());
-        $this->addType(new Type\TextareaType());
-        $this->addType(new Type\TextType());
-        $this->addType(new Type\TimeType());
-        $this->addType(new Type\TimezoneType());
-        $this->addType(new Type\UrlType());
-    }
 
-    private function addType(FormTypeInterface $type)
-    {
-        $this->types[$type->getName()] = $type;
-    }
-
-    public function getType($name)
-    {
-        return $this->types[$name];
-    }
-
-    public function hasType($name)
-    {
-        return isset($this->types[$name]);
+        parent::__construct($types);
     }
 }