我不知道这是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
- Person
和Person field name