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

时间:2012-06-22 07:25:26

标签: php symfony symfony-forms

我有我存储在数据库中的设置。这些设置有一个实体类。我在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);
    }
}

1 个答案:

答案 0 :(得分:1)

您是否尝试使用collection type

在控制器中检索您的设置数组,然后创建一个这样的集合表单:

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

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

也许quelque选择了de ce genre:

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

当然,在你的情况下,它可能不是key& value

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