[Form] Renamed the value "text" of the "widget" option of the "date" type to "single-text"

This commit is contained in:
Bernhard Schussek 2011-05-13 19:17:28 +02:00
parent 7570e04589
commit e0ff61949e
6 changed files with 107 additions and 46 deletions

View File

@ -139,6 +139,10 @@ beta1 to beta2
* Serializer: The `$properties` argument has been dropped from all interfaces.
* Form: Renamed option value "text" of "widget" option of the "date" type was
renamed to "single-text". "text" indicates to use separate text boxes now
(like for the "time" type).
PR12 to beta1
-------------

View File

@ -1,4 +1,4 @@
<?php if ($widget == 'text'): ?>
<?php if ($widget == 'single-text'): ?>
<input type="text"
<?php echo $view['form']->attributes() ?>
name="<?php echo $view->escape($name) ?>"

View File

@ -151,7 +151,7 @@
{% block date_widget %}
{% spaceless %}
{% if widget == 'text' %}
{% if widget == 'single-text' %}
{{ block('text_widget') }}
{% else %}
<div {{ block('attributes') }}>

View File

@ -35,29 +35,34 @@ class DateType extends AbstractType
\DateTimeZone::UTC
);
if ($options['widget'] === 'text') {
if ($options['widget'] === 'single-text') {
$builder->appendClientTransformer(new DateTimeToLocalizedStringTransformer($options['data_timezone'], $options['user_timezone'], $options['format'], \IntlDateFormatter::NONE));
} else {
// Only pass a subset of the options to children
$yearOptions = array(
'choice_list' => new PaddedChoiceList(
array_combine($options['years'], $options['years']), 4, '0', STR_PAD_LEFT
),
);
$monthOptions = array(
'choice_list' => new MonthChoiceList(
$formatter, $options['months']
),
);
$dayOptions = array(
'choice_list' => new PaddedChoiceList(
array_combine($options['days'], $options['days']), 2, '0', STR_PAD_LEFT
),
);
$yearOptions = $monthOptions = $dayOptions = array();
$widget = $options['widget'];
$builder->add('year', 'choice', $yearOptions)
->add('month', 'choice', $monthOptions)
->add('day', 'choice', $dayOptions)
if ($widget === 'choice') {
// Only pass a subset of the options to children
$yearOptions = array(
'choice_list' => new PaddedChoiceList(
array_combine($options['years'], $options['years']), 4, '0', STR_PAD_LEFT
),
);
$monthOptions = array(
'choice_list' => new MonthChoiceList(
$formatter, $options['months']
),
);
$dayOptions = array(
'choice_list' => new PaddedChoiceList(
array_combine($options['days'], $options['days']), 2, '0', STR_PAD_LEFT
),
);
}
$builder->add('year', $widget, $yearOptions)
->add('month', $widget, $monthOptions)
->add('day', $widget, $dayOptions)
->appendClientTransformer(new DateTimeToArrayTransformer($options['data_timezone'], $options['user_timezone'], array('year', 'month', 'day')));
}
@ -132,6 +137,7 @@ class DateType extends AbstractType
'array',
),
'widget' => array(
'single-text',
'text',
'choice',
),
@ -146,7 +152,7 @@ class DateType extends AbstractType
public function getParent(array $options)
{
return $options['widget'] === 'text' ? 'field' : 'form';
return $options['widget'] === 'single-text' ? 'field' : 'form';
}
public function getName()

View File

@ -597,6 +597,35 @@ abstract class AbstractLayoutTest extends \PHPUnit_Framework_TestCase
'widget' => 'text',
));
$this->assertWidgetMatchesXpath($form->createView(), array(),
'/div
[
./input
[@id="na&me_month"]
[@type="text"]
[@value="2"]
/following-sibling::input
[@id="na&me_day"]
[@type="text"]
[@value="3"]
/following-sibling::input
[@id="na&me_year"]
[@type="text"]
[@value="2011"]
]
[count(./input)=3]
'
);
}
public function testDateSingleText()
{
$form = $this->factory->createNamed('date', 'na&me', '2011-02-03', array(
'property_path' => 'name',
'input' => 'string',
'widget' => 'single-text',
));
$this->assertWidgetMatchesXpath($form->createView(), array(),
'/input
[@type="text"]

View File

@ -45,12 +45,12 @@ class DateTypeTest extends LocalizedTestCase
));
}
public function testSubmitFromInputDateTime()
public function testSubmitFromSingleTextDateTime()
{
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'input' => 'datetime',
));
@ -60,12 +60,12 @@ class DateTypeTest extends LocalizedTestCase
$this->assertEquals('02.06.2010', $form->getClientData());
}
public function testSubmitFromInputString()
public function testSubmitFromSingleTextString()
{
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'input' => 'string',
));
@ -75,12 +75,12 @@ class DateTypeTest extends LocalizedTestCase
$this->assertEquals('02.06.2010', $form->getClientData());
}
public function testSubmitFromInputTimestamp()
public function testSubmitFromSingleTextTimestamp()
{
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'input' => 'timestamp',
));
@ -92,12 +92,12 @@ class DateTypeTest extends LocalizedTestCase
$this->assertEquals('02.06.2010', $form->getClientData());
}
public function testSubmitFromInputRaw()
public function testSubmitFromSingleTextRaw()
{
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'input' => 'array',
));
@ -113,6 +113,28 @@ class DateTypeTest extends LocalizedTestCase
$this->assertEquals('02.06.2010', $form->getClientData());
}
public function testSubmitFromText()
{
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
));
$text = array(
'day' => '2',
'month' => '6',
'year' => '2010',
);
$form->bind($text);
$dateTime = new \DateTime('2010-06-02 UTC');
$this->assertDateTimeEquals($dateTime, $form->getData());
$this->assertEquals($text, $form->getClientData());
}
public function testSubmitFromChoice()
{
$form = $this->factory->create('date', null, array(
@ -163,7 +185,7 @@ class DateTypeTest extends LocalizedTestCase
'user_timezone' => 'Pacific/Tahiti',
// don't do this test with DateTime, because it leads to wrong results!
'input' => 'string',
'widget' => 'text',
'widget' => 'single-text',
));
$form->setData('2010-06-02');
@ -178,7 +200,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'years' => array(2010, 2011),
));
@ -194,7 +216,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'years' => array(2010, 2011),
));
@ -230,7 +252,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'years' => array(2010, 2012),
));
@ -246,7 +268,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'months' => array(6, 7),
));
@ -262,7 +284,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'months' => array(6, 7),
));
@ -298,7 +320,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'months' => array(6, 8),
));
@ -314,7 +336,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'days' => array(6, 7),
));
@ -330,7 +352,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'days' => array(6, 7),
));
@ -368,7 +390,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
'days' => array(6, 8),
));
@ -377,14 +399,14 @@ class DateTypeTest extends LocalizedTestCase
$this->assertFalse($form->isDayWithinRange());
}
public function testIsPartiallyFilledReturnsFalseIfInput()
public function testIsPartiallyFilledReturnsFalseIfSingleText()
{
$this->markTestIncomplete('Needs to be reimplemented using validators');
$form = $this->factory->create('date', null, array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'widget' => 'text',
'widget' => 'single-text',
));
$form->bind('7.6.2010');
@ -460,7 +482,7 @@ class DateTypeTest extends LocalizedTestCase
public function testDontPassDatePatternIfText()
{
$form = $this->factory->create('date', null, array(
'widget' => 'text',
'widget' => 'single-text',
));
$view = $form->createView();
@ -470,10 +492,10 @@ class DateTypeTest extends LocalizedTestCase
public function testPassWidgetToView()
{
$form = $this->factory->create('date', null, array(
'widget' => 'text',
'widget' => 'single-text',
));
$view = $form->createView();
$this->assertSame('text', $view->get('widget'));
$this->assertSame('single-text', $view->get('widget'));
}
}