如何以嵌入式形式只呈现特定的孙子?
How to render only a specific grandchild in embedded forms?
我的问题与类似,但没有包含模板。
我有一个嵌套表单
demand
home
n children
需求类型
class DemandTypeExtension extends AbstractTypeExtension {
public function buildForm(...): void
{
$builder
->add('home', HomeType::class, [
]);
家庭类型
class HomeType extends AbstractType {
public function buildForm(): void {
$builder
->add('children', CollectionType::class, [
'entry_type' => ChildrenType::class,
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'prototype' => true,
'label' => false,
]);
}
public function configureOptions(OptionsResolver $resolver): void {
$resolver->setDefaults([
'data_class' => Home::class,
]);
}
}
儿童类型
class ChildrenType extends AbstractType {
public function buildForm(...): void
{
$builder
->add('name', TextType::class, [
]);
}
public function configureOptions(OptionsResolver $resolver): void {
$resolver->setDefaults([
'data_class' => Children::class,
]);
}
我的表格
{{ form_widget(form.children) }}
Neither the property "children" nor one of the methods "children()", "getchildren()"/"ischildren()"/"haschildren()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView".
看来我必须渲染主页输入。
有没有可能只渲染子输入?也许有一些特殊的上下文(伪代码)?
{% block form_context(form.home) %}
{{ form_widget(form.children) }}
{% endblock form_context %}
是的,你可以做到。假设你的树枝示例中的 form
是 DemandType
的一个实例,那么你会做:
{{ form_widget(form.home.children) }}
但是,这可能不起作用,因为 children
也是某些 Symfony 表单类型的内置 属性。在 HomeType
中,我会将字段 children
重命名为其他名称,例如 childrenCollection
,在这种情况下,您可以在树枝视图中执行此操作:
{{ form_widget(form.home.childrenCollection) }}
我的问题与
我有一个嵌套表单
demand
home
n children
需求类型
class DemandTypeExtension extends AbstractTypeExtension {
public function buildForm(...): void
{
$builder
->add('home', HomeType::class, [
]);
家庭类型
class HomeType extends AbstractType {
public function buildForm(): void {
$builder
->add('children', CollectionType::class, [
'entry_type' => ChildrenType::class,
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'prototype' => true,
'label' => false,
]);
}
public function configureOptions(OptionsResolver $resolver): void {
$resolver->setDefaults([
'data_class' => Home::class,
]);
}
}
儿童类型
class ChildrenType extends AbstractType {
public function buildForm(...): void
{
$builder
->add('name', TextType::class, [
]);
}
public function configureOptions(OptionsResolver $resolver): void {
$resolver->setDefaults([
'data_class' => Children::class,
]);
}
我的表格
{{ form_widget(form.children) }}
Neither the property "children" nor one of the methods "children()", "getchildren()"/"ischildren()"/"haschildren()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView".
看来我必须渲染主页输入。
有没有可能只渲染子输入?也许有一些特殊的上下文(伪代码)?
{% block form_context(form.home) %}
{{ form_widget(form.children) }}
{% endblock form_context %}
是的,你可以做到。假设你的树枝示例中的 form
是 DemandType
的一个实例,那么你会做:
{{ form_widget(form.home.children) }}
但是,这可能不起作用,因为 children
也是某些 Symfony 表单类型的内置 属性。在 HomeType
中,我会将字段 children
重命名为其他名称,例如 childrenCollection
,在这种情况下,您可以在树枝视图中执行此操作:
{{ form_widget(form.home.childrenCollection) }}