diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php index a7fc6cadf50f..3e837ccef0d6 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php @@ -145,6 +145,10 @@ public function finishView(FormView $view, FormInterface $form, array $options) // remove special characters unless the format was explicitly specified if (!is_string($options['format'])) { + // remove quoted strings first + $pattern = preg_replace('/\'[^\']+\'/', '', $pattern); + + // remove remaining special chars $pattern = preg_replace('/[^yMd]+/', '', $pattern); } diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php index e5b58a8c4a26..e5aba86efe76 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php @@ -614,6 +614,20 @@ public function testDontPassDatePatternIfText() $this->assertFalse(isset($view->vars['date_pattern'])); } + public function testDatePatternFormatWithQuotedStrings() + { + \Locale::setDefault('es_ES'); + + $form = $this->factory->create('date', null, array( + // EEEE, d 'de' MMMM 'de' y + 'format' => \IntlDateFormatter::FULL, + )); + + $view = $form->createView(); + + $this->assertEquals('{{ day }}{{ month }}{{ year }}', $view->vars['date_pattern']); + } + public function testPassWidgetToView() { $form = $this->factory->create('date', null, array(