【问题标题】:Symfony Form Validation getters always triggering/failingSymfony 表单验证 getter 总是触发/失败
【发布时间】:2016-03-24 22:55:55
【问题描述】:

我将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;
   }
}

不幸的是,验证总是失败(即使我将返回值硬核为true)。验证代码似乎没有执行,表单触发错误。我什至尝试用IsFalse 和硬编码false 替换它。结果一样。

有人遇到过这个吗?

Symfony 2.8。 PHP 5.6.15

【问题讨论】:

  • 你在做什么来触发验证?如果是来自提交?如果可以,您也可以发布您的表格吗?

标签: symfony


【解决方案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函数不能是get/is/has +一个映射的属性名。

【讨论】:

  • 感谢您发布解决方案,我刚刚遇到了同样的问题 - 绝对需要记录!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 2016-03-25
  • 2011-12-09
  • 2011-06-12
  • 1970-01-01
相关资源
最近更新 更多