我有我存储在数据库中的设置。这些设置有一个实体类。我在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);
}
}
答案 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是面向对象的表单框架。让它做对象的工作。 :)