2014-07-10 53 views

回答

2

由于事实上,我知道的唯一途径,但所提出的正则表达式,为增加其自身的回调验证:

 ->add('occured_at', 'text', [ 
      'constraints' => [ 
       new Assert\NotBlank, 
       new ASsert\Callback(function($date, $context) { 
        if (false === \DateTime::createFromFormat(\DateTime::ISO8601, $date)) { 
         $context->addViolation("$date is not at ISO8601 format."); 
        } 
       }) 
      ], 
     ]) 
+0

'\ DateTime :: createFromFormat(\ DateTime :: ISO8601,$ date)'并不总是正确的。 http://stackoverflow.com/a/21260686/377645 –

1

只用symfony 3.1

你可以使用

@Assert\DateTime(format="Y-m-d\TH:i:sO") 

参见:http://symfony.com/doc/current/reference/constraints/DateTime.html

ISO8601“Y-m-d \ TH:i:sO”的格式;

http://php.net/manual/en/class.datetime.php

EDIT 1:

可以使用直接的格式 “C”,快捷方式ISO 8601格式

(ISO 8601的日期(在PHP 5中添加):http://php.net/manual/en/function.date.php

+0

这不适合我,它说格式选项是不允许的。 – Arkemlar

+0

你在哪个版本的symfony中? – Xero

+0

在github上得到了答案,它需要3.1或更高版本。但是这个选项非常明显,我甚至想象不出这个验证器如何存在。 – Arkemlar

相关问题