2014-02-25 25 views
3

我有一个合并另一种表单类型的表单类型。Symfony2:子表单中的事件侦听器从不被调用/事件未被分派

我已经添加了一个事件侦听器到子表单,但侦听器永远不会执行。

第一个表单类型:

class AFormType extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder 
       ->add('aSubFormType', new SubFormType()); 
    } 
//[...] 
} 

第二种形式类型:

class SubFormType extends AbstractType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $builder->add("metier", "text"); 

    $builder->addEventListener(
     \Symfony\Component\Form\FormEvents::PRE_SET_DATA, 
     function(\Symfony\Component\Form\FormEvent $event){ 
     // Some Stuff never executed 
    });   
    } 
} 

我不知道这种行为是正确的,或者如果这是一个错误? 而我如何在子表格中使用EventListner?

谢谢

+0

作为重复结算您的代码看起来是正确的。我会使用'use'语句,例如:http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html。我认为表格正确显示?添加一个die语句只是为了确保函数永远不会被调用。 – Cerad

+0

你猜对了。表格正确显示,但事件永远不会调用。 我已经添加了一个死亡声明,就像你问。页面和表单正确显示。 我试图找出在symfony2事件系统中发生了什么。我不知道为什么Symfony \ Component \ EventDispatcher \ EventDispatcher会释放我的事件。 – Waldo

+0

我有同样的问题。看来,symfony不会搜索儿童formType上的事件/数据转换(在挖掘表格类后) – Chopchop

回答