我尝试验证日期(不是日期时间)
在我的验证器中,我有:
myDate:
- Date: ~
- LessThanOrEqual:
value: today
message: "myDate must be less or equal than today."
在提交表单之前,我将此日期发送到我的API(我使用symfony作为FOSRestBundle的API):
myDate:"2017-06-09T00:00:00.000Z"
但是当我在这个方法中看Symfony \ Component \ Validator \ Constraints \ LessThanOrEqualValidator时:
protected function compareValues($value1, $value2)
{
return $value1 <= $value2;
}
我有这些价值观:
$ VALUE1
DateTime::__set_state(array(
'date' => '2017-06-09 02:00:00.000000',
'timezone_type' => 3,
'timezone' => 'Europe/Paris',
))
$值2
DateTime::__set_state(array(
'date' => '2017-06-09 00:00:00.000000',
'timezone_type' => 3,
'timezone' => 'Europe/Paris',
))
我的验证失败了。
你能帮我解决这个问题吗?我不需要时间,我只想验证日期。我如何删除2小时?
由于
编辑: 在我的php.ini中,我有:
date.timezone ="Europe/Paris"
我通过发送正确的时间来解决问题
答案 0 :(得分:0)
首先,LessThanOrEqual
正如其名称所代表的那样。它比较左操作数是否小于或等于右操作数。无论是\DateTime
还是int
还是其他内容。
由于您验证\DeteTime
我建议您使用Callback Constraint或Expression Constraint,以便您可以定义如何验证这些内容。我个人对此用例的选择是通过FormType中的POST_SUBMIT事件进行验证。见 - How to add validators on the fly in Symfony2?