我正在使用Validator来检查我的var。其中一个是对象SeminarDate
,其中包含startDate
和endDate
。我的想法是使用Symfony Validator检查日期。但是,它不起作用。例如:“+ 0200StackOverflow”是有效日期......
控制器中的部分操作
foreach($dataReq['date'] as $key_a => $a) {
$SeminarDate = new SeminarDate;
$SeminarDate->setStartDate(new \DateTime($a['startdate']));
$SeminarDate->setEndDate(new \DateTime($a['enddate']));
$SeminarDates[] = $SeminarDate;
$errors = $validator->validate($SeminarDate);
if(count($errors)>0){
$errorString = (string) $errors;
return new View($errorString);
}
}
验证yml的一部分:
seminarDate:
- Collection:
fields:
startDate:
- Required:
- NotBlank:
message: 'startdate is required.'
- DateTime: ~
endDate:
- Required:
- DateTime: ~
- NotBlank:
message: 'endDate ist required.'
示例(将JSON文件发送到Controller):
"date" : [
{ "startdate": "+0200Stackoverflow",
"enddate" : "+0200Stackoverlfow"
}
],
如果你需要更多,请问。 感谢
答案 0 :(得分:0)
您应该安装php intl扩展以便正常进行日期验证。
选中此https://symfony.com/doc/current/setup.html#checking-symfony-application-configuration-and-setup
你可以去这里 http://localhost:8000/config.php 看你是否拥有它,或者你的phpinfo。
答案 1 :(得分:0)
我这样做了,我只是创建了一个新的验证器,并在将它添加到我的Doctrine类之前检查字符串本身。
foreach($getData['date'] as $key => $value) {
$validator = Validation::createValidator();
if(!isset($value['startdate'])){
return new View('startdate doesnt exist.');
} elseif(!isset($value['enddate'])){
return new View('enddate doesnt exist.');
}
foreach($value as $value1){
$violations = $validator->validate($value1, array(
new NotBlank(),
new DateTime(),
));
if (count($violations)>0) {
return new View('date isnt valid!');
}
}