Added relevent links for parsing to the phpdoc

This commit is contained in:
Fred Cox 2018-09-15 14:32:16 +03:00
parent 4f06f1524d
commit e21a1a4df1
3 changed files with 20 additions and 15 deletions

View File

@ -16,17 +16,18 @@ use Symfony\Component\Form\Exception\TransformationFailedException;
/**
* @author Franz Wilding <franz.wilding@me.com>
* @author Bernhard Schussek <bschussek@gmail.com>
* @author Fred Cox <mcfedr@gmail.com>
*/
class DateTimeToHtml5DateTimeLocalTransformer extends BaseDateTimeTransformer
class DateTimeToHtml5LocalDateTimeTransformer extends BaseDateTimeTransformer
{
const HTML5_FORMAT = 'Y-m-d\\TH:i:s';
/**
* Transforms a normalized date into a localized date without trailing timezone.
* Transforms a \DateTime into a local date and time string.
*
* According to the HTML standard, the input string of a datetime-local
* input is a RFC3339 date followed by 'T', followed by a RFC3339 time.
* http://w3c.github.io/html-reference/datatypes.html#form.data.datetime-local
* https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-local-date-and-time-string
*
* @param \DateTime|\DateTimeInterface $dateTime A DateTime object
*
@ -57,7 +58,11 @@ class DateTimeToHtml5DateTimeLocalTransformer extends BaseDateTimeTransformer
}
/**
* Transforms a formatted datetime-local string into a normalized date.
* Transforms a local date and time string into a \DateTime.
*
* When transforming back to DateTime the regex is slightly laxer, taking into
* account rules for parsing a local date and time string
* https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-local-date-and-time-string
*
* @param string $dateTimeLocal Formatted string
*

View File

@ -15,7 +15,7 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\DataTransformer\ArrayToPartsTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DataTransformerChain;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5DateTimeLocalTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5LocalDateTimeTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer;
@ -75,7 +75,7 @@ class DateTimeType extends AbstractType
if ('single_text' === $options['widget']) {
if (self::HTML5_FORMAT === $pattern) {
$builder->addViewTransformer(new DateTimeToHtml5DateTimeLocalTransformer(
$builder->addViewTransformer(new DateTimeToHtml5LocalDateTimeTransformer(
$options['model_timezone'],
$options['view_timezone']
));

View File

@ -12,9 +12,9 @@
namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5DateTimeLocalTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToHtml5LocalDateTimeTransformer;
class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
class DateTimeToHtml5LocalDateTimeTransformerTest extends TestCase
{
public static function assertEquals($expected, $actual, $message = '', $delta = 0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
{
@ -59,7 +59,7 @@ class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
*/
public function testTransform($fromTz, $toTz, $from, $to)
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer($fromTz, $toTz);
$transformer = new DateTimeToHtml5LocalDateTimeTransformer($fromTz, $toTz);
$this->assertSame($to, $transformer->transform(null !== $from ? new \DateTime($from) : null));
}
@ -70,7 +70,7 @@ class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
*/
public function testTransformDateTimeImmutable($fromTz, $toTz, $from, $to)
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer($fromTz, $toTz);
$transformer = new DateTimeToHtml5LocalDateTimeTransformer($fromTz, $toTz);
$this->assertSame($to, $transformer->transform(null !== $from ? new \DateTimeImmutable($from) : null));
}
@ -80,7 +80,7 @@ class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
*/
public function testTransformRequiresValidDateTime()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer();
$transformer = new DateTimeToHtml5LocalDateTimeTransformer();
$transformer->transform('2010-01-01');
}
@ -89,7 +89,7 @@ class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
*/
public function testReverseTransform($toTz, $fromTz, $to, $from)
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer($toTz, $fromTz);
$transformer = new DateTimeToHtml5LocalDateTimeTransformer($toTz, $fromTz);
if (null !== $to) {
$this->assertEquals(new \DateTime($to), $transformer->reverseTransform($from));
@ -103,7 +103,7 @@ class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
*/
public function testReverseTransformRequiresString()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer();
$transformer = new DateTimeToHtml5LocalDateTimeTransformer();
$transformer->reverseTransform(12345);
}
@ -112,7 +112,7 @@ class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
*/
public function testReverseTransformWithNonExistingDate()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer('UTC', 'UTC');
$transformer = new DateTimeToHtml5LocalDateTimeTransformer('UTC', 'UTC');
$transformer->reverseTransform('2010-04-31T04:05');
}
@ -122,7 +122,7 @@ class DateTimeToHtml5DateTimeLocaleTransformerTest extends TestCase
*/
public function testReverseTransformExpectsValidDateString()
{
$transformer = new DateTimeToHtml5DateTimeLocalTransformer('UTC', 'UTC');
$transformer = new DateTimeToHtml5LocalDateTimeTransformer('UTC', 'UTC');
$transformer->reverseTransform('2010-2010-2010');
}