我正在使用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
答案 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函数不能得到/是/有+映射的属性名称。