2016-03-24 8 views
2

Ich verwende Symfony's Validator Getter Component In Verbindung mit Symfony Formen.Symfony Form Validierung Getter immer Triggerung/Fehler

In einer meiner Entitäten-Dateien, die ich habe:

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

Leider ist die Validierung fehlschlägt immer (auch wenn ich den Rückgabewert Hardcore true zu sein). Der Validierungscode scheint nicht ausgeführt zu werden, und das Formular löst den Fehler aus. Ich habe sogar versucht, es durch IsFalse und harte Codierung false zu ersetzen. Gleiches Ergebnis.

Wer findet das?

Symfony 2.8. PHP 5.6.15

+0

Was tun Sie, um die Validierung auszulösen? Wenn ein von submit ist? Wenn ja, können Sie Ihr Formular auch posten? –

Antwort

1

Nun, ich kann nicht vollständig erklären, was das eigentliche Problem ist (weil ich nicht weiß), aber ich habe eine Lösung gefunden.

In meiner StudentPaper Einheit hatte ich

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

als Eigenschaft. Es stellte sich heraus, dass die Eigenschaft paper AND und ein Validierungsgetter namens hasPaper() zu unerwartetem Verhalten führte. Sobald ich den Funktionsnamen von hasPaper() zu hasTesting() oder hasSubmittedPaper änderte, funktionierte der Getter wie beabsichtigt.

Also die Lösung ist, dass die Getter-Funktion nicht bekommen/ist/hat + einen zugeordneten Eigenschaftsnamen.

+1

Vielen Dank für die Veröffentlichung der Lösung, ich habe nur das gleiche Problem - unbedingt dokumentiert werden muss! –