Symfony2表单呈现一个具有相同名称的字段


Symfony2 form renders one field with same name

我有存储在数据库中的设置。这些设置有一个实体类。我在Controller中请求它们,并将设置数组发送到我的FormType。但在buildForm()中,我只能渲染一个设置。我相信这是因为字段的名称与所有设置完全相同。

但是当我尝试对字段进行编号时,我收到一个错误,说有 no function mapped to a Setting class with getId1() or isId1() .

以下是代码片段:

protected $allSettings;
public function __construct(array $allSettings)
{
    $this->allSettings = $allSettings;
}
public function buildForm(FormBuilder $builder, array $options)
{
    foreach($this->allSettings as $setting) {
        $id = $setting->getId();
        $builder->add('id'.$id, 'hidden')->setData($setting);
    }
}

您是否尝试使用集合类型?

在控制器中检索设置数组,然后创建一个如下所示的集合表单:

$form = $this->createForm('collection', $yourArray, array(
    'type' => 'your settings_type'
));

'your_settings_type'应该是用于编辑设置实体的 FormType 的名称。

也许奎尔克选择了 de ce 类型:

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('key', 'text');
    $builder->add('value', 'text');
}

当然,就您而言,这可能不是keyvalue

只要记住一件事:不要使用id。你不需要。FormComponent是一个面向对象的表单框架。让它对对象完成它的工作。:)