创建一个包含两个属性的Symfony表单下拉列表

时间:2016-02-14 17:43:57

标签: symfony formbuilder

我尝试使用下拉列表创建一个Symfony表单,该列表使用两个属性。

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

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

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

我想让用户在一个直接供应商或一组供应商之间进行选择,如下所示:

  1. ----直接供应商----
    • 米其林
    • 欧式
  2. ----供应商集团----
    • 欧洲供应商
    • 美国供应商
  3. 我不知道如何在表单构建器中处理这种情况。

1 个答案:

答案 0 :(得分:0)

您需要将表单定义为服务(http://symfony.com/doc/current/book/forms.html#defining-your-forms-as-services),然后在其中注入实体管理器。 在构建表单之前,您需要查询存储库以获取供应商。

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);

然后你可以这样做来创建你的列表:

http://symfony.com/doc/current/reference/forms/types/choice.html#grouping-options