I have settings that I store in my database. There is an entity class for these settings. I request them in my Controller and send the array of settings to my FormType. But in the buildForm() I can only render one setting. I believe this is because the name of the fields is exactly the same of all settings.
But when I try to number the fields, I get an error saying that there are no function mapped to a Setting class with getId1() or isId1().
Here is the code snippet:
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);
}
}
Did you try to use the collection type?
Retrieve your array of settings in your controller then, create a collection form like this:
'your_settings_type'should be the name of your FormType used to edit a settings entity.Maybe quelque chose de ce genre:
Of course, in your case, it’s probably not
key&value.Just remember one thing: don’t use ids. You don’t need. FormComponent is an object oriented form framework. Let it do it’s job with objects. 🙂