我的问题类似于Symfony form inheritance : Neither the property nor one of the methods exist,但不包含模板。
我有一个嵌套表单
demand
home
n children
DemandType
class DemandTypeExtension extends AbstractTypeExtension {
public function buildForm(...): void
{
$builder
->add('home', HomeType::class, [
]);
HomeType
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,
]);
}
}
ChildrenType
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) }}
属性“ children”或方法“ children()”,“ getchildren()” /“ ischildren()” /“ haschildren()”或“ __call()”都不存在,并且在类中没有公共访问权限“ Symfony \ Component \ Form \ FormView”。
似乎我必须呈现原始输入。
是否只能渲染孩子输入?也许有一些特殊的上下文(伪代码)?
{% block form_context(form.home) %}
{{ form_widget(form.children) }}
{% endblock form_context %}
答案 0 :(得分:1)
是的,您可以这样做。假设您的树枝示例中的form
是DemandType
的实例,那么您可以这样做:
{{ form_widget(form.home.children) }}
但是,这可能不起作用,因为children
还是某些Symfony表单类型上的内置属性。在HomeType
中,我将字段children
重命名为其他名称,例如childrenCollection
,在这种情况下,您可以在树枝视图中执行此操作:
{{ form_widget(form.home.childrenCollection) }}