在Symfony 3上动态创建选择类型字段

时间:2019-03-07 11:35:33

标签: php symfony

我对Symfony还是很陌生,我正在寻找一种在表单中动态创建选择类型字段的方法。

实际上,我有几种产品可以通过表格中的query_builder获取。 在展示了产品和价格之后,我想要一个选择下拉列表,以便用户可以选择要获得的产品数量。

实际上,在我的构建器表单中,我借助查询构建器来获取产品,并获得+/- 30种产品,但是此数字可以更改。

问题是我想要与产品一样多的下拉菜单,直到现在我的构建器看起来像这样:

        return $builder
        ->add('price', EntityType::class ,[
            'class'=> Price::class,
            'query_builder' => function (PriceRepository $pr) use ($goldenOptions, $currentCompany){
                return $pr->getPrice($goldenOptions, $currentCompany->getOrder()->getCompanyType(),  $currentCompany->getOnboardingRevenues(), true);
            },
            'expanded'=>true,
            'multiple'=>true,
            'placeholder'=>true 
        ])
        ->add('quantity',ChoiceType::class,[
            'choices'=>['mensuel'=>true,'trimestriel'=>false,'1'=>1,'2'=>2,'3'=>3,'4'=>4],
            'expanded'=>false,
            'multiple'=>false
        ])
        ->add('submit', SubmitType::class,[
            'attr' => ['class' => 'save'],
            'label'=>'Sauvegarder',
            'attr' => ['class' => 'btn btn-purple btn-rounded']
        ])

问题是这样我只能得到1个下拉列表,而我要几个。我设法用javascript重现了它,但是当我处理请求并从中获取数据时,Symfony只识别出第一个“数量”字段。

如果有人对如何创建多核“数量”字段有想法,而symfony则感谢他们。也许是事件监听器,但我不知道我该怎么做。

1 个答案:

答案 0 :(得分:0)

我猜这是针对某种电子商务应用程序的,其中您有一个装有产品的购物车,并希望选择数量。

我将拥有一个“购物车”实体,其中包含许多“ CartProduct”,每个实体都具有一个“ Product”作为关系,并具有数量等其他属性。

使用此方法,您可以拥有一个CartForm,其中可以嵌入任意数量的CartProductForm及其数量等。

与文档中的示例相同,其中“任务”为“购物车”,“标签”为“ CartProducts”: https://symfony.com/doc/current/form/form_collections.html