Symfony表单验证getter总是触发/失败

时间:2016-03-24 22:55:55

标签: symfony

我正在使用Symfony's Validator Getter Component与symfony表格结合使用。

在我的一个实体文件中,我有:

use Symfony\Component\Validator\Constraints as Assert;

class StudentPaper
{
   .....
   /**
    * @Assert\IsTrue(message = "You must include a paper with your submission")
    */
   public function hasPaper()
   {
       // I originally had logic that checked the validity, but just 
       // changed the return value to 'true' to prove that it's not working.
       return true;
   }
}

不幸的是,验证总是失败(即使我将返回值硬化为{{​​1}})。似乎没有执行验证代码,表单会触发错误。我甚至尝试用true和硬编码IsFalse替换它。结果相同。

有人碰到过这个吗?

Symfony 2.8。 PHP 5.6.15

1 个答案:

答案 0 :(得分:1)

好吧,我无法完全解释实际问题是什么(因为我不知道),但我确实找到了解决方案。

在我的StudentPaper实体中,我有

 /**
 * Bidirectional - Student Papers have one file.
 *
 * @ORM\OneToOne(targetEntity="StudentPaperFile", inversedBy="student_paper", cascade={"persist", "remove"}, orphanRemoval=true)
 * @ORM\JoinColumn()
 * @Assert\Valid()
 */
protected $paper;

作为财产。事实证明,拥有名为paper的属性和名为hasPaper()的验证getter导致了意外行为。只要我将函数名称从hasPaper()更改为hasTesting()hasSubmittedPaper,那么getter就会按原样运行。

所以解决方法是 getter函数不能得到/是/有+映射的属性名称。