Php Symfony 3多对多表格

Php Symfony 3多对多表格,php,many-to-many,symfony-forms,symfony,Php,Many To Many,Symfony Forms,Symfony,我正在尝试创建一个表单,以便下订单。我的数据库架构如下所示: 我想要一个这样的表格: 这就是我到目前为止所做的: $order = new Order(); $form = $this->createFormBuilder($order) ->add('naam', TextType::class) ->add('email', EmailType::class) ->add('phoneNumber', TextType::class)

我正在尝试创建一个表单,以便下订单。我的数据库架构如下所示:

我想要一个这样的表格:

这就是我到目前为止所做的:

$order = new Order();

$form = $this->createFormBuilder($order)
    ->add('naam', TextType::class)
    ->add('email', EmailType::class)
    ->add('phoneNumber', TextType::class)
    ->add('dateTakeout', DateType::class)
    ->add('hourTakeout', DateType::class)
    ->add('save', SubmitType::class, array('label' => 'Verzenden'))
    ->getForm();
但是我一直坚持把产品添加到我的表单中。我该怎么做

更新:

我的产品和类别的联系如下:

我有一个具有id、名称、已启用和parentCategoryId的类别实体

在我的产品实体中,我有一个类别属性

我想展示如下类别和产品:

将此项添加到表单中:

use Symfony\Component\Form\Extension\Core\Type\IntegerType;
...
->add('product_A', IntegerType::class)
->add('product_B', IntegerType::class)
->add('product_C', IntegerType::class)
->add('product_D', IntegerType::class)
这是一个整数,因此您只需调用:

$prodA_amount = $form->get('product_A')->getData();

要获取值…

我认为这是为实体
OrderHasProducts
嵌入多个表单

初始化表单对象时,需要循环所有产品(或其中一些产品,具体取决于您的需求),并将它们添加到
Order
新实例中,然后让symfony发挥创建表单的魔力

要创建嵌入表单,请执行以下操作:

$builder->add('order_has_products', CollectionType::class, array(
        'entry_type' => OrderHasProduct::class
));
并为OrderHasProduct实体创建表单

(检查文档)

在控制器中,类似以下内容:

$order = new Order();
foreach($products as $product) :
// you may wanna create your custom method here
    $order->addOrderProduct((new OrderHasProduct())
                        ->setOrder($order)
                        ->setProduct($product));
endforeach;

您希望产品如何显示在表单上?也许有下拉列表?比如能够选择产品?或者是那些数字字段,您可以在其中输入产品的“数量”?@AlvinBunk:我想显示所有产品,您可以输入数量(这是多对多的数字字段)以及如何将它们分类?如果只是直观的,请使用带有
标记的
标记,然后对它们进行逻辑分组。也许我不明白你想要实现什么?我想把产品归类(如图所示)。但我如何在控制器中执行此操作,并在视图中显示每个类别下的产品?让我问一下,产品A和B是否属于“类别A”,您是否有一个名为“类别”的实体,以及“类别A”的“对象”。或者类似的。我不知道你把什么称为产品组。表格本身只是视觉上的,我想我的答案仍然是正确的。您仍然需要一个输入字段,用户在其中键入所需数量的“整数”,然后使用例如
$prodA_amount=$form->get('product_a')->getData()
获取产品A的值(数量),然后可以将其存储在产品A的实体中。