diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php index f260c472ddffc..2a977789d8e9a 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' => null, + 'time_invalid_message' => null, + '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()); + } }
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: