如何在Symfony OneToMany关系中创建动态下降?

时间:2019-06-01 08:01:57

标签: symfony symfony4 symfony-forms symfony-4.3

教区:

-----------------
|id|diocese_name|
-----------------

|1 |   DJ       | 
|2 |   Kpg      |

一对多

Parish:
---------------------------
|id|diocese_id|parish_name|
---------------------------
|1 |    1     |St. Jude   |
|2 |    1     |St. Mark   |
|3 |    2     |St. Peter  |
|4 |    2     |St. thomas | 

我想使下拉菜单动态化: 当用户单击教区名称时,应显示相关的教区名称。

我尝试了Form Event,但是我无法遵循文档。 这是代码。

        $builder
        ->add('diocese_name', EntityType::class,[

            'class' => 'App\Entity\Diocese',
            'choice_label' => 'diocese_name'
        ])
    ;

    $builder
        ->addEventListener(

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

                $parish = $data->getParish();

                dump($parish);



            }
        );

1 个答案:

答案 0 :(得分:0)

您不需要使用任何事件侦听器。最好的方法是使用Symfony的“自定义表单”。

查看文档:

https://symfony.com/doc/current/form/create_custom_field_type.html https://symfony.com/doc/current/form/form_customization.html

您必须为教区创建一个“选择类型”并自定义字段(如上面的第一个链接)。在您的树枝中(默认情况下为文件“ ... / fields.html.twig”),制作一个

{{ dump(form) }}

查看可以访问的变量!

如果要使用实体管理器发出“学说”请求,可以!您可以创建一个自定义FormType,然后使用attr或其他方法在树枝中传递此请求的结果。

希望这会有所帮助, 最好的问候!