Forms 如何使用Symfony创建具有变量字段的表单?

Forms 如何使用Symfony创建具有变量字段的表单?,forms,symfony,Forms,Symfony,我正在尝试组合一个表单,它必须使用可变数量的字段来构建 我的模型是这样的:我有一个名为concepts的表和另一个名为concept\u values的表 概念值为概念值的1-N(每个概念每月有一个值) 因此,我创建了一个表单,用户可以在其中输入当月每个概念的值 这就是我目前所做的: $lastMonthEnd = new \DateTimeImmutable('last day of last month'); $fb = $this->createFormBuilde

我正在尝试组合一个表单,它必须使用可变数量的字段来构建

我的模型是这样的:我有一个名为
concepts
的表和另一个名为
concept\u values
的表

概念值为概念值的1-N(每个概念每月有一个值)

因此,我创建了一个表单,用户可以在其中输入当月每个概念的值

这就是我目前所做的:

$lastMonthEnd = new \DateTimeImmutable('last day of last month');

        $fb = $this->createFormBuilder();

        foreach ($concepts as $concept) {
            $conceptValue = $concept->getValueFor($lastMonthEnd);

            $fb
                ->add(
                    'concept_'.$concept->getId(),
                    NumberType::class,
                    [
                        'label' => $concept->getName().' ('.$concept->getFormat().'):',
                        'html5' => true,
                        'data' => $conceptValue,
                        'required' => false,
                    ]
                )
            ;
        }

        $form = $fb->add(
            'submit',
            SubmitType::class,
            [
                'label' => 'Guardar',
            ]
        )->getForm();
我遇到的问题是当我尝试将conceptValue对象绑定到小部件时

如果我将代码保持原样,则会出现异常
无法转换属性路径“[concept_457]”的值:应为数字。

我尝试将行
'data'=>$conceptValue,
更改为
'data'=>$conceptValue->getValue(),
,这很有效,但是,当需要保存输入时,我需要根据小部件名称进行第二次查找

我也试着想出一个模型转换器,但并不真正理解如何使用它


谢谢

这看起来像是你可以用的东西。我相信你也可以在这里找到一些关于它的问题。谢谢@msg。我尝试将其更改为使用CollectionType。它呈现表单(我仍然需要处理标签和其他东西),但是我仍然无法保存提交的值。显然,集合中的对象没有绑定到formIt,可能是因为字段名和属性名不匹配。有一种选择可能有助于解决这个问题。