startDate和endDate-Symfony之间的区别

时间:2017-07-25 08:07:01

标签: symfony validation

有人可以帮助我吗,我有一张学生桌,我想确保用户输入从现在到3个月的日期范围。我试过这个,但它没有给我我想要的结果。考虑使用datediff,但不知道我会把它放在哪里。是否有另一种方法,如使用自定义验证来验证日期。

* @Assert\Range
     * ( 
     * min= "today", max="+3 months"
     * )

Error message:
  

此值应为有效数字。

2 个答案:

答案 0 :(得分:0)

您可以尝试在setter中进行验证。 像

这样的东西
public function setEndDate($endDate)
{
    if(your end date - your start date < 3){
        $this->endDate= $endDate;
    }else{
        Throw whatever exepection you cant
   }

    return $this;
}

答案 1 :(得分:0)

@Assert\Callback(methods={"validatePayrollPeriod"})


  public function validatePayrollPeriod(ExecutionContextInterface $context) {
    $days = $this->startdate->diff($this->enddate)->days;
    if ($days <= 7 || $days > 14) {
        $context->buildViolation('Not a valid payroll period.')
            ->atPath('enddate') 
            ->addViolation();
    }
}