2013-11-22 70 views
0

我搜索了一段时间,但我没有找到任何东西。Symfony2表格动态选择实体

我想用另一个选择创建一个动态选择。例如:

以我的形式,我有两个字段(类别&子类别)链接到一个实体,当我选择一个项目在类别下拉项目在子类别将改变。

所以好吧,我发现我可以管理一个事件监听器。

$builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event){ 
     $form = $event->getForm(); 
     $data = $event->getData(); 

     var_dump($data->getCategory()); 
    }); 

好吧,我可以得到所选的类别和加载后的子类别,但我怎么可以用ajax调用这个?

希望大家有什么例子?

回答

0

的反应不是那么简单......基本上,如果你想根据初步&提交的值建立一个形式,你需要一个事件侦听器附加到PRE_SET_DATA & PRE_SUBMIT事件。当表单被初始化时,PRE_SET_DATA事件被触发。在这里,你将接收你的对象作为表单事件中的数据,如果你不提供一个(不要忘记处理这种情况),则为null。通过第一部分,您将能够根据您的初始数据动态构建您的表单。

然后,当您处理表单时,如果提交表单,PRE_SUBMIT事件将被触发。在这种情况下,你将会感受到一个扁平的阵列会萎缩所有提交的数据。根据这个数组,你可以根据提交的数据重建表单。这里的主要问题是阵列是一个数组&不是你的模型对象。意思是你不会有类别对象,但他的视图表示(他的ID)...

希望它有帮助!