From 78b2062c5e81ece3afcadeeb4ee6c5ee6a9bad3d Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Sat, 23 Apr 2011 19:42:40 -0500 Subject: [PATCH] [Form] Adding an exception for an invalid widget option in DateType --- .../Component/Form/Extension/Core/Type/DateType.php | 5 ++++- .../Form/Extension/Core/Type/DateTypeTest.php | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php index f9952485b6..45c496e7bc 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') { 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..444b971787 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,16 @@ class DateTypeTest extends LocalizedTestCase \Locale::setDefault('de_AT'); } + /** + * @expectedException Symfony\Component\Form\Exception\FormException + */ + public function testInvalidWidgetOption() + { + $form = $this->factory->create('date', 'name', array( + 'widget' => 'fake_widget', + )); + } + public function testSubmitFromInputDateTime() { $form = $this->factory->create('date', null, array(