2016-03-24 47 views
2

我使用Symfony's Validator Getter Component在用symfony形式相結合。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

+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()的驗證獲取器導致了意外的行爲。只要我將功能名稱從hasPaper()更改爲hasTesting()hasSubmittedPaper,那麼該吸氣劑按照預期工作。

所以解決的辦法是,的getter函數不能得到/ is/has +映射的屬性名稱。

+1

感謝您發佈解決方案,我只是遇到同樣的問題 - 絕對需要記錄! –