Ana Form devam ettiğinde, ana varlıka kendini eklemesi gereken özel bir FormType'ım var.Symfony2 (> = 2.3): Ebeveyn formu olayını çocuktan nasıl dinleyebilirim?
Symfony < 2.3 bu aşağıdakileri yaparak yapılabilir:
class FooType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
...
$builder->getParent()->addEventSubscriber(new FooSubscriber)
}
}
class FooSubscriber implements EventSubscriberInterface
{
static function getSubscribedEvents()
{
return array(
FormEvents::POST_SUBMIT => 'postSubmit'
);
}
}
Ama $builder->getParent()
kaldırıldığını fark ettik Symfony 2.6 yükselttikten sonra. Ama şimdi gönderilmekte olan ebeveyni dinleyemiyorum.
Bu yüzden dinleyiciyi oluşturucuma ekledim ve üst öğeyi Abonenin içinden başvuruda buldum.
function postSubmit(FormEvent $e)
{
if ($e->getForm()->getParent()->getRoot()->isValid()) {
//this gives 'false'
Bu sahte kod sonraki parça kaynaklanır: henüz sunulmamış beri, ki değil - ben geçerli olmak ana formdaki bir kontrol yapmak beri Ama bu gerçekten çalışmıyor
// Symfony\Component\Form\Form.php @ line 744
public function isValid()
{
if (!$this->submitted) {
return false;
}
ve ebeveyn formu öncelikle oğul döngüsü ve kendi üzerine $this->submitted = true
ayarlamadan önce ... Ben ebeveyn geçerli olup olmadığından emin değilim, o gönderir çünkü
TL; DR
nasıl ebeveyn Formunu ayarlamak zorunda kalmadan, benim ana formu bir EventListener ekleyebilir? FooType'ımın, tüm FooType'a özel bir mantık yapmayı/hatırlamayı bilmeden, tüm formlara ekleyebileceğim bir şey olmasını istiyorum.
Dediğiniz gibi, getParent 2.3'de kaldırıldı. Kullanım durumunu daha ayrıntılı olarak açıklayabilir misiniz? Daha iyi bir çözüm olabilir. – Cerad
Başka bir varlığa eklenebilen bir varlıktır. Bu durumda, bir Sayfa kalıcı olduğunda oluşturulan bir MenuItem. Bu MenuItem, Sayfanın başlığına dayanmaktadır, bu nedenle giriş için üst öğeye ihtiyacı vardır. Ama ben Sayfanın 'bilmesini' istemiyorum, ona bağlı bir MenuItem var. Bu yüzden, daha önce PageAdmin'e bir MenuItem ekleyebilirdim ve o da buydu. Şimdi admin'e abone olun - bir abone ekleyin ** kirli ** – Oskar
Aynı soruna sahip olmak, Kök formunun geçerli olup olmadığını bilmek istiyorum, bunu 2'de yapmanın bir yolunu bulamıyorum.6 :( – Tiois