Веточка Symfony с подобъектом - PullRequest
0 голосов
/ 10 мая 2018

Я не знаю, является ли это ошибкой в ​​Symfony / twig или я не правильно это понимаю.

У меня есть форма со многими полями, и одно 'поле' является подобъектом (может быть, у этого есть другое имя, но я не знаю, как в нотации Symfony), например:

...
...
->add('bank_name', TextType::class,
    [
        'required' => false,
        'label' => 'Bank name',
        'attr' => [
            'title' => 'Bank name',
        ],
    ])
->add('person', PersonType::class,
    [
        'required' => true,
        'label' => 'Contact Person data',
    ])
 ...
 ...

Это делает форму в ветке правильно, но когда я хочу редактировать свои данные, Person поля не заполняются.

Я сделал dump формы, чтобы проверить, что здесь происходит, и я нашел обходное решение:

{{ form_widget(form.person.name, {'value': form.person.vars.value.name}) }}

Это решение, потому что, как правило, значения находятся, например, в: {{ dump(form.bank_name.vars.value) }}

но в случае Person он находится в: {{ dump(form.person.vars.value.name) }}, {{ dump(form.person.vars.value.address) }}, ...

Любой намек здесь?

    "symfony/asset": "^4.0",
    "symfony/console": "^4.0",
    "symfony/debug-pack": "^1.0",
    "symfony/flex": "^1.0",
    "symfony/form": "^4.0",
    "symfony/framework-bundle": "^4.0",
    "symfony/lts": "^4@dev",
    "symfony/maker-bundle": "^1.3",
    "symfony/orm-pack": "^1.0",
    "symfony/security-bundle": "^4.0",
    "symfony/serializer": "^4.0",
    "symfony/validator": "^4.0",
    "symfony/web-server-bundle": "^4.0",
    "symfony/yaml": "^4.0"

Редактировать # 1:

Заполните форму с данными в контроллере:

    $bank = Utils::jsonToObject($bankData, Bank::class);
    if (isset($bankData->person)) {
        $person = Utils::jsonToObject($bankData->person, \App\Entity\API\Person::class);
    } else {
        $person = new \App\Entity\API\Person();
    }
    $bank->setPerson($person);

    $form = $this->createForm(BankType::class, $bank);

    $form->handleRequest($request);

Редактировать # 2

Я нашел, где именно проблема, но обходной путь, о котором я упоминал ранее, не работает.

Проблема только с name Поле персоны. Все остальные поля работают правильно. Я предполагаю, что это конфликт с subobject name - Person и Person field name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...