diff --git a/src/Symfony/Component/Form/AbstractExtension.php b/src/Symfony/Component/Form/AbstractExtension.php index 25a4c527aa..4e75fc28ae 100644 --- a/src/Symfony/Component/Form/AbstractExtension.php +++ b/src/Symfony/Component/Form/AbstractExtension.php @@ -99,7 +99,7 @@ abstract class AbstractExtension implements FormExtensionInterface $guesser = $this->loadTypeGuesser(); if (!$guesser instanceof FormTypeGuesserInterface) { - throw new UnexpectedTypeException($type, 'Symfony\Component\Form\FormTypeGuesserInterface'); + throw new UnexpectedTypeException($guesser, 'Symfony\Component\Form\FormTypeGuesserInterface'); } $this->guesser = $guesser; diff --git a/src/Symfony/Component/Form/Extension/Core/CoreExtension.php b/src/Symfony/Component/Form/Extension/Core/CoreExtension.php index 5e350c0d89..8614c02766 100644 --- a/src/Symfony/Component/Form/Extension/Core/CoreExtension.php +++ b/src/Symfony/Component/Form/Extension/Core/CoreExtension.php @@ -16,12 +16,15 @@ use Symfony\Component\Form\AbstractExtension; use Symfony\Component\Validator\ValidatorInterface; use Symfony\Component\HttpFoundation\File\TemporaryStorage; +/** + * Represents the main form extension, which loads the core functionality. + * + * @author Bernhard Schussek + */ class CoreExtension extends AbstractExtension { private $storage; - private $typeGuesser; - public function __construct(TemporaryStorage $storage) { $this->storage = $storage; diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php index f9952485b6..88c8445b0a 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php @@ -14,6 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormBuilder; +use Symfony\Component\Form\Exception\FormException; use Symfony\Component\Form\Extension\Core\ChoiceList\PaddedChoiceList; use Symfony\Component\Form\Extension\Core\ChoiceList\MonthChoiceList; use Symfony\Component\Form\FormView; @@ -36,7 +37,7 @@ class DateType extends AbstractType if ($options['widget'] === 'text') { $builder->appendClientTransformer(new DateTimeToLocalizedStringTransformer($options['data_timezone'], $options['user_timezone'], $options['format'], \IntlDateFormatter::NONE)); - } else { + } elseif ($options['widget'] == 'choice') { // Only pass a subset of the options to children $yearOptions = array( 'choice_list' => new PaddedChoiceList( @@ -58,6 +59,8 @@ class DateType extends AbstractType ->add('month', 'choice', $monthOptions) ->add('day', 'choice', $dayOptions) ->appendClientTransformer(new DateTimeToArrayTransformer($options['data_timezone'], $options['user_timezone'], array('year', 'month', 'day'))); + } else { + throw new FormException('The "widget" option must be set to either "text" or "choice".'); } if ($options['input'] === 'string') { @@ -72,6 +75,8 @@ class DateType extends AbstractType $builder->appendNormTransformer(new ReversedTransformer( new DateTimeToArrayTransformer($options['data_timezone'], $options['data_timezone'], array('year', 'month', 'day')) )); + } else if ($options['input'] !== 'datetime') { + throw new FormException('The "input" option must be "datetime", "string", "timestamp" or "array".'); } $builder diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php index 424c4d1c9d..c224b95829 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php @@ -26,7 +26,6 @@ class TimeType extends AbstractType public function buildForm(FormBuilder $builder, array $options) { $hourOptions = $minuteOptions = $secondOptions = array(); - $child = $options['widget'] === 'text' ? 'text' : 'choice'; $parts = array('hour', 'minute'); if ($options['widget'] === 'choice') { diff --git a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTypeTest.php b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTypeTest.php index bb4b09902c..cde4738de6 100644 --- a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTypeTest.php +++ b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTypeTest.php @@ -25,6 +25,26 @@ class DateTypeTest extends LocalizedTestCase \Locale::setDefault('de_AT'); } + /** + * @expectedException Symfony\Component\Form\Exception\FormException + */ + public function testInvalidWidgetOption() + { + $form = $this->factory->create('date', null, array( + 'widget' => 'fake_widget', + )); + } + + /** + * @expectedException Symfony\Component\Form\Exception\FormException + */ + public function testInvalidInputOption() + { + $form = $this->factory->create('date', null, array( + 'input' => 'fake_input', + )); + } + public function testSubmitFromInputDateTime() { $form = $this->factory->create('date', null, array( diff --git a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FileTypeTest.php b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FileTypeTest.php index 5be69ef092..14eafd4e0a 100644 --- a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FileTypeTest.php +++ b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/FileTypeTest.php @@ -25,7 +25,10 @@ class FileTypeTest extends TypeTestCase public static function setUpBeforeClass() { self::$tmpDir = sys_get_temp_dir().DIRECTORY_SEPARATOR.'symfony-test'; - mkdir(self::$tmpDir, 0777, true); + + if (!file_exists(self::$tmpDir)) { + mkdir(self::$tmpDir, 0777, true); + } } protected function setUp()