symfony - 扩展 EntityType 以访问实体
问题描述
我想在使用EntityType::class
. 我有一个如下表格:
->add('fooBars', MyNewType::class, [
'class' => FooBar::class,
'choices' => $fooBars,
'label' => 'Foo Bar',
'multiple' => true,
'expanded' => true,
'required' => false,
'by_reference' => false,
]);
我创建了一个具有实体类型父级的新类型,然后我也有一个自定义模板。遵循此操作后,我显示了我的实体类型,但是我在子项上循环时,我不知道如何访问该实体。
{% 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 %}
我想在它循环的实体上调用一个方法,但我不确定如何访问它。我不能甩掉孩子,因为它产生的太多了。
解决方案
这可以使用以下方法来实现:
{% 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 }}}
推荐阅读
- c - 如何用看门狗杀死进程?
- c++ - 获取有关调试断言失败的错误:表达式:“(_Ptr_user &(_BIG_ALLOCATION_ALIGNMENT -1)) == 0”&& 0
- python - 如何在不受其他系统干扰的情况下将数字系统转换为十进制系统
- v8 - V8' Context::New 崩溃
- charts - 谷歌图表中的工具提示和注释
- c# - C# - 不能将类型 'string[][]' 隐式转换为 'int[][]'
- jquery - highcharts 版本的变化打破了元素的动画
- java - 在子类中使用父实例
- ios - 尝试运行 Xcode 10.3 应用程序时出现信号 SIGABRT ('NSUnknownKeyException') 错误 [不使用情节提要]
- c# - 如何获取 3 个浮点数并将它们放入一个向量 3 的 transform.postion 中?