From 195361f5e2995803ffb4fc8ceca872b2c01961b1 Mon Sep 17 00:00:00 2001 From: Antoine Leveque Date: Mon, 28 May 2012 16:58:45 +0200 Subject: [PATCH 1/2] [WIP][Form] added support for different invalid messages for date, time. Bug fix: yes Feature addition: yes Backwards compatibility break: no Symfony2 tests pass: yes Fixes the following tickets: #4359 Todo: DateTimeType, when used with the widget "text", currently duplicates the invalid error when an invalid value is entered. License of the code: MIT Documentation PR: none --- .../Form/Extension/Core/Type/DateTimeType.php | 20 ++++++++++++++++ .../Extension/Core/Type/DateTimeTypeTest.php | 24 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php index f260c472ddffc..c08d7e2ccea38 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php @@ -44,6 +44,14 @@ public function buildForm(FormBuilder $builder, array $options) $builder->appendClientTransformer(new DateTimeToStringTransformer($options['data_timezone'], $options['user_timezone'], $format)); } else { // Only pass a subset of the options to children + + // Check if an invalid date message is defined + if(isset($options['date_invalid_message'])) { + $options['invalid_message'] = $options['date_invalid_message']; + } + if(isset($options['date_invalid_message_parameters'])) { + $options['invalid_message_parameters'] = $options['date_invalid_message_parameters']; + } $dateOptions = array_intersect_key($options, array_flip(array( 'years', 'months', @@ -53,6 +61,14 @@ public function buildForm(FormBuilder $builder, array $options) 'invalid_message', 'invalid_message_parameters' ))); + + // Check if an invalid time message is defined + if(isset($options['time_invalid_message'])) { + $options['invalid_message'] = $options['time_invalid_message']; + } + if(isset($options['time_invalid_message_parameters'])) { + $options['invalid_message_parameters'] = $options['time_invalid_message_parameters']; + } $timeOptions = array_intersect_key($options, array_flip(array( 'hours', 'minutes', @@ -151,6 +167,10 @@ public function getDefaultOptions(array $options) 'widget' => null, // This will overwrite "empty_value" child options 'empty_value' => null, + 'date_invalid_message' => 'This date is not valid', + 'time_invalid_message' => 'This time is not valid', + 'date_invalid_message_parameters' => array(), + 'time_invalid_message_parameters' => array(), ); } diff --git a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTimeTypeTest.php b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTimeTypeTest.php index cba6cccd379b8..27a3f83f83ded 100644 --- a/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTimeTypeTest.php +++ b/tests/Symfony/Tests/Component/Form/Extension/Core/Type/DateTimeTypeTest.php @@ -234,4 +234,28 @@ public function testSubmit_invalidDateTime() $this->assertEquals(array(new FormError('Customized invalid message', array())), $form['date']->getErrors()); $this->assertEquals(array(new FormError('Customized invalid message', array())), $form['time']->getErrors()); } + + public function testSubmit_invalidDateTime_differentMessages() + { + $form = $this->factory->create('datetime', null, array( + 'date_invalid_message' => 'Customized invalid date message', + 'time_invalid_message' => 'Customized invalid time message', + )); + + $form->bind(array( + 'date' => array( + 'day' => '31', + 'month' => '9', + 'year' => '2010', + ), + 'time' => array( + 'hour' => '25', + 'minute' => '4', + ), + )); + + $this->assertFalse($form->isValid()); + $this->assertEquals(array(new FormError('Customized invalid date message', array())), $form['date']->getErrors()); + $this->assertEquals(array(new FormError('Customized invalid time message', array())), $form['time']->getErrors()); + } } From 82f5ed2b1744ff0c02b4c86c1ca15b8a9b8a72d0 Mon Sep 17 00:00:00 2001 From: Antoine Leveque Date: Mon, 28 May 2012 17:06:31 +0200 Subject: [PATCH 2/2] [Form] fix default values to make test pass again --- .../Component/Form/Extension/Core/Type/DateTimeType.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php index c08d7e2ccea38..2a977789d8e9a 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php @@ -167,8 +167,8 @@ public function getDefaultOptions(array $options) 'widget' => null, // This will overwrite "empty_value" child options 'empty_value' => null, - 'date_invalid_message' => 'This date is not valid', - 'time_invalid_message' => 'This time is not valid', + 'date_invalid_message' => null, + 'time_invalid_message' => null, 'date_invalid_message_parameters' => array(), 'time_invalid_message_parameters' => array(), ); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy