add allow_html5 option to date and time FormType to disable HTML5 date input when widget is set to single_text
remove unnecessary test when creating datetime format data transformer
This commit is contained in:
parent
b3b41d5d8d
commit
392d6c789b
@ -1,6 +1,10 @@
|
|||||||
CHANGELOG
|
CHANGELOG
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
2.6.0
|
||||||
|
-----
|
||||||
|
* added allow_html5 option to Date, Time and DateTimeFormType to disable HTML5 input date when widget option is single_text
|
||||||
|
|
||||||
2.5.0
|
2.5.0
|
||||||
------
|
------
|
||||||
|
|
||||||
|
@ -117,6 +117,7 @@ class DateTimeType extends AbstractType
|
|||||||
'empty_value',
|
'empty_value',
|
||||||
'required',
|
'required',
|
||||||
'translation_domain',
|
'translation_domain',
|
||||||
|
'allow_html5',
|
||||||
)));
|
)));
|
||||||
|
|
||||||
$timeOptions = array_intersect_key($options, array_flip(array(
|
$timeOptions = array_intersect_key($options, array_flip(array(
|
||||||
@ -128,6 +129,7 @@ class DateTimeType extends AbstractType
|
|||||||
'empty_value',
|
'empty_value',
|
||||||
'required',
|
'required',
|
||||||
'translation_domain',
|
'translation_domain',
|
||||||
|
'allow_html5',
|
||||||
)));
|
)));
|
||||||
|
|
||||||
if (null !== $options['date_widget']) {
|
if (null !== $options['date_widget']) {
|
||||||
@ -180,10 +182,11 @@ class DateTimeType extends AbstractType
|
|||||||
{
|
{
|
||||||
$view->vars['widget'] = $options['widget'];
|
$view->vars['widget'] = $options['widget'];
|
||||||
|
|
||||||
// Change the input to a HTML5 date input if
|
// Change the input to a HTML5 datetime input if
|
||||||
// * the widget is set to "single_text"
|
// * the widget is set to "single_text"
|
||||||
// * the format matches the one expected by HTML5
|
// * the format matches the one expected by HTML5
|
||||||
if ('single_text' === $options['widget'] && self::HTML5_FORMAT === $options['format']) {
|
// * the allow_html5 is set to true
|
||||||
|
if ($options['allow_html5'] && 'single_text' === $options['widget'] && self::HTML5_FORMAT === $options['format']) {
|
||||||
$view->vars['type'] = 'datetime';
|
$view->vars['type'] = 'datetime';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -218,6 +221,7 @@ class DateTimeType extends AbstractType
|
|||||||
'time_widget' => $timeWidget,
|
'time_widget' => $timeWidget,
|
||||||
'with_minutes' => true,
|
'with_minutes' => true,
|
||||||
'with_seconds' => false,
|
'with_seconds' => false,
|
||||||
|
'allow_html5' => true,
|
||||||
// Don't modify \DateTime classes by reference, we treat
|
// Don't modify \DateTime classes by reference, we treat
|
||||||
// them like immutable value objects
|
// them like immutable value objects
|
||||||
'by_reference' => false,
|
'by_reference' => false,
|
||||||
|
@ -130,7 +130,8 @@ class DateType extends AbstractType
|
|||||||
// Change the input to a HTML5 date input if
|
// Change the input to a HTML5 date input if
|
||||||
// * the widget is set to "single_text"
|
// * the widget is set to "single_text"
|
||||||
// * the format matches the one expected by HTML5
|
// * the format matches the one expected by HTML5
|
||||||
if ('single_text' === $options['widget'] && self::HTML5_FORMAT === $options['format']) {
|
// * the allow_html5 is set to true
|
||||||
|
if ($options['allow_html5'] && 'single_text' === $options['widget'] && self::HTML5_FORMAT === $options['format']) {
|
||||||
$view->vars['type'] = 'date';
|
$view->vars['type'] = 'date';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,6 +200,7 @@ class DateType extends AbstractType
|
|||||||
'model_timezone' => null,
|
'model_timezone' => null,
|
||||||
'view_timezone' => null,
|
'view_timezone' => null,
|
||||||
'empty_value' => $emptyValue,
|
'empty_value' => $emptyValue,
|
||||||
|
'allow_html5' => true,
|
||||||
// Don't modify \DateTime classes by reference, we treat
|
// Don't modify \DateTime classes by reference, we treat
|
||||||
// them like immutable value objects
|
// them like immutable value objects
|
||||||
'by_reference' => false,
|
'by_reference' => false,
|
||||||
|
@ -138,7 +138,10 @@ class TimeType extends AbstractType
|
|||||||
'with_seconds' => $options['with_seconds'],
|
'with_seconds' => $options['with_seconds'],
|
||||||
));
|
));
|
||||||
|
|
||||||
if ('single_text' === $options['widget']) {
|
// Change the input to a HTML5 time input if
|
||||||
|
// * the widget is set to "single_text"
|
||||||
|
// * the allow_html5 is set to true
|
||||||
|
if ($options['allow_html5'] && 'single_text' === $options['widget']) {
|
||||||
$view->vars['type'] = 'time';
|
$view->vars['type'] = 'time';
|
||||||
|
|
||||||
// we need to force the browser to display the seconds by
|
// we need to force the browser to display the seconds by
|
||||||
@ -192,6 +195,7 @@ class TimeType extends AbstractType
|
|||||||
'model_timezone' => null,
|
'model_timezone' => null,
|
||||||
'view_timezone' => null,
|
'view_timezone' => null,
|
||||||
'empty_value' => $emptyValue,
|
'empty_value' => $emptyValue,
|
||||||
|
'allow_html5' => true,
|
||||||
// Don't modify \DateTime classes by reference, we treat
|
// Don't modify \DateTime classes by reference, we treat
|
||||||
// them like immutable value objects
|
// them like immutable value objects
|
||||||
'by_reference' => false,
|
'by_reference' => false,
|
||||||
|
@ -32,7 +32,7 @@ class DateTimeToRfc3339TransformerTest extends DateTimeTestCase
|
|||||||
$this->dateTimeWithoutSeconds = null;
|
$this->dateTimeWithoutSeconds = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function assertEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = FALSE, $ignoreCase = FALSE)
|
public static function assertEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
|
||||||
{
|
{
|
||||||
if ($expected instanceof \DateTime && $actual instanceof \DateTime) {
|
if ($expected instanceof \DateTime && $actual instanceof \DateTime) {
|
||||||
$expected = $expected->format('c');
|
$expected = $expected->format('c');
|
||||||
|
@ -405,6 +405,17 @@ class DateTimeTypeTest extends TypeTestCase
|
|||||||
$this->assertSame('datetime', $view->vars['type']);
|
$this->assertSame('datetime', $view->vars['type']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDontPassHtml5TypeIfHtml5NotAllowed()
|
||||||
|
{
|
||||||
|
$form = $this->factory->create('datetime', null, array(
|
||||||
|
'widget' => 'single_text',
|
||||||
|
'allow_html5' => false,
|
||||||
|
));
|
||||||
|
|
||||||
|
$view = $form->createView();
|
||||||
|
$this->assertFalse(isset($view->vars['type']));
|
||||||
|
}
|
||||||
|
|
||||||
public function testDontPassHtml5TypeIfNotHtml5Format()
|
public function testDontPassHtml5TypeIfNotHtml5Format()
|
||||||
{
|
{
|
||||||
$form = $this->factory->create('datetime', null, array(
|
$form = $this->factory->create('datetime', null, array(
|
||||||
|
@ -705,6 +705,17 @@ class DateTypeTest extends TypeTestCase
|
|||||||
$this->assertSame('date', $view->vars['type']);
|
$this->assertSame('date', $view->vars['type']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDontPassHtml5TypeIfHtml5NotAllowed()
|
||||||
|
{
|
||||||
|
$form = $this->factory->create('date', null, array(
|
||||||
|
'widget' => 'single_text',
|
||||||
|
'allow_html5' => false,
|
||||||
|
));
|
||||||
|
|
||||||
|
$view = $form->createView();
|
||||||
|
$this->assertFalse(isset($view->vars['type']));
|
||||||
|
}
|
||||||
|
|
||||||
public function testDontPassHtml5TypeIfNotHtml5Format()
|
public function testDontPassHtml5TypeIfNotHtml5Format()
|
||||||
{
|
{
|
||||||
$form = $this->factory->create('date', null, array(
|
$form = $this->factory->create('date', null, array(
|
||||||
|
@ -519,6 +519,17 @@ class TimeTypeTest extends TypeTestCase
|
|||||||
$this->assertEquals(30, $view->vars['attr']['step']);
|
$this->assertEquals(30, $view->vars['attr']['step']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDontPassHtml5TypeIfHtml5NotAllowed()
|
||||||
|
{
|
||||||
|
$form = $this->factory->create('time', null, array(
|
||||||
|
'widget' => 'single_text',
|
||||||
|
'allow_html5' => false,
|
||||||
|
));
|
||||||
|
|
||||||
|
$view = $form->createView();
|
||||||
|
$this->assertFalse(isset($view->vars['type']));
|
||||||
|
}
|
||||||
|
|
||||||
public function testPassDefaultEmptyValueToViewIfNotRequired()
|
public function testPassDefaultEmptyValueToViewIfNotRequired()
|
||||||
{
|
{
|
||||||
$form = $this->factory->create('time', null, array(
|
$form = $this->factory->create('time', null, array(
|
||||||
|
Reference in New Issue
Block a user