2012-08-29 9 views
20

Symfony formumla bazı karmaşık doğrulamalar yapıyorum ve denetleyiciden belirli bir alana bir hata atayabilmem gerekiyor.Symfony2'de denetleyiciden alana özel bir hata ekleme

$error = new formerror("There is an error with the form"); 
$form->addError($error); 

Ama bu küresel bir hata değil, belirli bir alana bağlı bir oluşturur: Şu anda, bu gibi çalışan küresel hatalar var.

Belirli bir alanda denetleyiciden bir hata atmanın bir yolu var mı?

cevap

44

IRC (yardım @ fkrauthan!) Üzerinden yapılan bazı yardımlar sayesinde bir cevap buldum.

SF2'deki her alan aslında bir form örneğidir. Yapmanız gereken şey, alanın form nesnesine erişmek ve daha sonra buna bir hata eklemek. Neyse ki, symfony gömülü bir form/alan elde etmek için bir yöntem sağlar.

İşte benim kod:

$error = new FormError("There is an error with the field"); 
$form->get('field')->addError($error); 

bazı insanlar işaret gibi, dosyanızı üstündeki FormError sınıfını dahil etmek gerekir: use Symfony\Component\Form\FormError;

+0

Nice'i! :) Cevabınızı kabul eder misiniz? –

+0

Yığın taşması, ilk 2 gün boyunca kendi cevabınızı kabul etmenize izin vermez. – MrGlass

+0

Ah, doğru. Daha sonra yapmayı ihmal etmeyin;) –