Как вручную создать вложенную форму в Symfony 4 и заполнить ее массивом - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть объект 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...