Symfony枝与子对象

时间:2018-05-10 07:04:51

标签: php symfony twig

我不知道这是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:

使用Controller中的数据填写表单:

    $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 - PersonPerson field name

冲突

0 个答案:

没有答案