From 6e41ee494a62397ef890adfc38c969ee51ca86fd Mon Sep 17 00:00:00 2001 From: Tugdual Saunier Date: Tue, 4 Mar 2014 11:12:50 +0000 Subject: [PATCH 1/2] [Form] Automatically add step attribute to HTML5 time widgets to display seconds if needed --- .../Form/Extension/Core/Type/TimeType.php | 4 +++ .../Extension/Core/Type/TimeTypeTest.php | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php index d7a2a9efba519..c74f832c0a9b9 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php @@ -140,6 +140,10 @@ public function buildView(FormView $view, FormInterface $form, array $options) if ('single_text' === $options['widget']) { $view->vars['type'] = 'time'; + + if ($options['with_seconds'] && !isset($view->vars['attr']['step'])) { + $view->vars['attr']['step'] = 1; + } } } diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php index 9bdfe1567b3ce..ca186207ac29f 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php @@ -492,6 +492,33 @@ public function testSingleTextWidgetShouldUseTheRightInputType() $this->assertEquals('time', $view->vars['type']); } + public function testSingleTextWidgetWithSecondsShouldHaveRightStepAttribute() + { + $form = $this->factory->create('time', null, array( + 'widget' => 'single_text', + 'with_seconds' => true, + )); + + $view = $form->createView(); + $this->assertArrayHasKey('step', $view->vars['attr']); + $this->assertEquals(1, $view->vars['attr']['step']); + } + + public function testSingleTextWidgetWithSecondsShouldNotOverrideStepAttribute() + { + $form = $this->factory->create('time', null, array( + 'widget' => 'single_text', + 'with_seconds' => true, + 'attr' => array( + 'step' => 30 + ) + )); + + $view = $form->createView(); + $this->assertArrayHasKey('step', $view->vars['attr']); + $this->assertEquals(30, $view->vars['attr']['step']); + } + public function testPassDefaultEmptyValueToViewIfNotRequired() { $form = $this->factory->create('time', null, array( From 6f8ee8cbfdf74a4b1d755d0505d799091fe62904 Mon Sep 17 00:00:00 2001 From: Tugdual Saunier Date: Fri, 16 May 2014 13:46:31 +0200 Subject: [PATCH 2/2] [Form] add comments regarding why we add automatically the step attribute in TimeType --- src/Symfony/Component/Form/Extension/Core/Type/TimeType.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php index c74f832c0a9b9..6bf41517ac0d7 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php @@ -141,6 +141,10 @@ public function buildView(FormView $view, FormInterface $form, array $options) if ('single_text' === $options['widget']) { $view->vars['type'] = 'time'; + // we need to force the browser to display the seconds by + // adding the HTML attribute step if not already defined. + // Otherwise the browser will not display and so not send the seconds + // therefore the value will always be considered as invalid. if ($options['with_seconds'] && !isset($view->vars['attr']['step'])) { $view->vars['attr']['step'] = 1; } 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