2016-03-24 20 views
2

Symfony formlarıyla birlikte Symfony's Validator Getter Component kullanıyorum. Benim kişiler dosyalarından birindeSymfony Form Onaylama toplayıcıları her zaman tetikleniyor/başarısız oluyor

, ben:

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

Maalesef doğrulama daima (I true olmak dönüş değeri hardcore bile) başarısız olur. Doğrulama kodu çalıştırılmıyor gibi görünüyor ve form hatayı tetikliyor. IsFalse ve sabit kodlama false ile değiştirmeyi bile denedim. Aynı sonuç.

Buna rastlayan var mı?

Symfony 2.8. PHP 5.6.15

+0

Doğrulamayı tetiklemek için ne yapıyorsunuz? Gönderilenlerden biri mi? Öyleyse formunuzu da gönderebilir misiniz? –

cevap

1

Asıl sorunun ne olduğunu tam olarak açıklayamıyorum (çünkü bilmiyorum), ama bir çözüm buldum. Benim StudentPaper varlıkta

Bir özelliği olarak

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

vardı. paper adlı bir özelliğe sahip olmanın ve hasPaper() adlı bir doğrulama alıcısının beklenmedik davranışlara neden olduğunu ortaya çıkarır. İşlev adını hasPaper()'dan hasTesting() veya hasSubmittedPaper'a değiştirdiğimde, alıcı amaçlandığı gibi çalışır.

Bu nedenle, çözüm, 'un, getter işlevinin eşlenen bir özellik adı/is/has + sahip olamaz.

+1

Çözümü gönderdiğiniz için teşekkürler, sadece aynı sorunu gördüm - kesinlikle belgeleme ihtiyacı var! –

İlgili konular