У меня есть объект myEntity
со свойством json типа с именем records
, который после десериализации выглядит так:
class myEntity
{
public function getRecords()
{
return [
['param1' => 'value1', 'param2' => 'value2'],
['param1' => 'value1', 'param2' => 'value2'],
];
}
}
Я хочу создать форму, которая будет заполнена этими десериализованными значениями,и добавьте еще одну строку для новых значений:
MAIN FORM
-> Record #1
-> Param 1
-> Param 2
-> Record #2
-> Param 1
-> Param 2
-> New Record <- additional empty row
-> Param 1
-> Param 2
Создайте новую форму в контроллере:
$this->container->get('form.factory')->create(myMainForm::class, $myEntity);
В основной форме я создаю вложенную форму с именем records
:
class myMainFormType extends EasyAdminFormType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('records', myRecordsType::class);
}
}
И здесь у меня проблема, я не знаю, как я могу перебрать все существующие значения массива (и добавить дополнительную строку), потому что $ builder-> getData () пуст:
class myRecordsType extends EasyAdminFormType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// TODO buildForm(), something like:
// foreach (... as ...)
// {
// $builder->add('record', myRecordType::class);
// }
}
}
И, в конце концов, будут созданы текстовые поля, тогда все просто понятно:
class myRecordType extends EasyAdminFormType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('param1', TextType::class);
$builder->add('param2', TextType::class);
}
}