回调约束所针对的方法“xxx”不存在Symfony2

时间:2014-06-23 08:20:06

标签: validation symfony callback constraints

此方法位于我的实体类

public function validateStartDate(ExecutionContextInterface $context)
{
    if ($this->getEndDate() < $this->getStartDate()){
      $context->addViolationAt(
          'endDate',
          'End date cannnot be before Start date',
          array(),
          null
      );
    }

}

我在$ startDate上使用回调约束

/**
 * @ORM\Column(type="datetime", name="start_date")
 * @Assert\Type("\DateTime")
 * @Assert\Callback(methods={"validateStartDate"})
 */
private $startDate;

我有以下导入

use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\ExecutionContextInterface;
use Symfony\Component\Validator\ExecutionContext;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

将Symfony 2.5与mysql一起使用。

我提交表单时收到的错误是

  

Method&#34; validateStartDate&#34; Callback约束的目标不是   存在

在这方面的任何帮助将不胜感激。

提前致谢

1 个答案:

答案 0 :(得分:2)

从Symfony 2.4开始,回调验证程序为simplified。您可以在方法上使用Callback批注来告诉Syfmony2这是一个在验证时执行的自定义函数。

use Symfony\Component\Validator\Constraints as Assert;
class Author
{
    /**
     * @Assert\Callback
     */
    public function validate(ExecutionContextInterface $context)
    {
        // ...
    }
}