2014-07-10 96 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

相關問題