扩展 EntityType 以访问实体
Extending EntityType to access Entity
我想在使用 EntityType::class
时访问实体的实例。我有如下表格:
->add('fooBars', MyNewType::class, [
'class' => FooBar::class,
'choices' => $fooBars,
'label' => 'Foo Bar',
'multiple' => true,
'expanded' => true,
'required' => false,
'by_reference' => false,
]);
我创建了一个新类型,它具有 parent 实体类型,然后我还有一个自定义模板。按照 this 我显示了我的实体类型,但是我在 children 上循环,我不知道如何访问该实体。
{% block foo_bar_widget %}
{% spaceless %}
{% if expanded %}
<ul {{ block('widget_container_attributes') }}>
{% for child in form if not child.rendered %}
<li>
{{ form_widget(child) }}
{{ form_label(child) }}
</li>
{% endfor %}
</ul>
{% else %}
{{ block('choice_widget') }}
{% endif %}
{% endspaceless %}
{% endblock %}
我想在它正在循环的实体上调用一个方法,但我不确定如何访问它。我不能倾倒 child 因为它产生太多。
这可以通过以下方式实现:
{% set entity = form.vars.choices[child.vars.value].data %}
因此完整的块可能如下所示:
{% block foo_bar_widget %}
{% spaceless %}
{% if expanded %}
<ul {{ block('widget_container_attributes') }}>
{% for child in form if not child.rendered %}
{% set entity = form.vars.choices[child.vars.value].data %}
<li>
{{ form_widget(child) }}
{{ form_label(child) }}
</li>
{% endfor %}
</ul>
{% else %}
{{ block('choice_widget') }}
{% endif %}
{% endspaceless %}
{% endblock %}
现在您可以像这样调用实体方法了:
{{ entity.name }}}
我想在使用 EntityType::class
时访问实体的实例。我有如下表格:
->add('fooBars', MyNewType::class, [
'class' => FooBar::class,
'choices' => $fooBars,
'label' => 'Foo Bar',
'multiple' => true,
'expanded' => true,
'required' => false,
'by_reference' => false,
]);
我创建了一个新类型,它具有 parent 实体类型,然后我还有一个自定义模板。按照 this 我显示了我的实体类型,但是我在 children 上循环,我不知道如何访问该实体。
{% block foo_bar_widget %}
{% spaceless %}
{% if expanded %}
<ul {{ block('widget_container_attributes') }}>
{% for child in form if not child.rendered %}
<li>
{{ form_widget(child) }}
{{ form_label(child) }}
</li>
{% endfor %}
</ul>
{% else %}
{{ block('choice_widget') }}
{% endif %}
{% endspaceless %}
{% endblock %}
我想在它正在循环的实体上调用一个方法,但我不确定如何访问它。我不能倾倒 child 因为它产生太多。
这可以通过以下方式实现:
{% set entity = form.vars.choices[child.vars.value].data %}
因此完整的块可能如下所示:
{% block foo_bar_widget %}
{% spaceless %}
{% if expanded %}
<ul {{ block('widget_container_attributes') }}>
{% for child in form if not child.rendered %}
{% set entity = form.vars.choices[child.vars.value].data %}
<li>
{{ form_widget(child) }}
{{ form_label(child) }}
</li>
{% endfor %}
</ul>
{% else %}
{{ block('choice_widget') }}
{% endif %}
{% endspaceless %}
{% endblock %}
现在您可以像这样调用实体方法了:
{{ entity.name }}}