2

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

1 回答 1

1

您是否尝试使用集合类型

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

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

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

也许 quelque 选择了 de ce 流派:

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

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

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

于 2012-06-22T07:37:48.183 回答