创建具有两个属性的Symfony表单下拉列表

创建具有两个属性的Symfony表单下拉列表,symfony,formbuilder,Symfony,Formbuilder,我正在尝试创建一个带有下拉列表的Symfony表单,它使用两个属性 让我解释一下: 我有一个SparePart实体,具有两个属性: /** * @ORM\ManyToOne(targetEntity="CM\PlatformBundle\Entity\Supplier") */ private $supplier; /** * @ORM\ManyToOne(targetEntity="CM\PlatformBundle\Entity\SupplierGroup") */ private $su

我正在尝试创建一个带有下拉列表的Symfony表单,它使用两个属性

让我解释一下: 我有一个SparePart实体,具有两个属性:

/**
* @ORM\ManyToOne(targetEntity="CM\PlatformBundle\Entity\Supplier")
*/
private $supplier;

/**
* @ORM\ManyToOne(targetEntity="CM\PlatformBundle\Entity\SupplierGroup")
*/
private $supplierGroup;
我想让用户在一个直接供应商或一组供应商之间进行选择,如下所示:

  • ----直接供应商----
    • 米其林
    • 大陆的
  • ----供应商组----
    • 欧洲供应商
    • 美国供应商

  • 我不知道如何在表单生成器中处理这种情况。

    您需要将表单定义为服务(),并在其中插入实体管理器。 在构建表单之前,您需要查询存储库以获取供应商

    public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $suppliers = $this->em->repository->findAll();
    
            //loop through your results to build an array
    
            $builder
                …
            ;
        }
    
    构建与此模式匹配的数组

    $arrSuppliers[$groupName] = array($supplierId => $supplierName);
    
    然后你可以这样做来创建你的列表:


    谢谢你,哈基姆,我会尽快尝试一下。我成功地在表单类型之外创建了数组,我只需通过$options参数传递它。但是,我不知道如何在表单中添加数组。你能给我看一个例子吗?如果你的数组格式正确,这个
    $builder->add('stockStatus',ChoiceType::class,数组('choices'=>$yourray))应该可以了,谢谢!终于找到了!我只是遇到了麻烦,因为它是一个未映射的字段,所以我必须添加:
    ->add('supplier','choice',array('choices'=>$suppliersList,“mapped”=>false),)
    现在,我将很高兴验证这个:p