symfony - 从 Twig 模板中的实体字段获取选择数量

标签 symfony twig

我有一个 Doctrine 实体的 Symfony 2 表单,其中包含多对多关系的实体选择字段。选择字段可能没有任何选择 - 我如何在 Twig 中测试这一点?

示例:该表单适用于“交易”实体,可以选择将其分配给“位置”实体。我像这样渲染“位置”实体字段:

{{ form_label(edit_form.locations) }}
{{ form_errors(edit_form.locations) }}
{{ form_widget(edit_form.locations) }}

该字段设置为使用复选框进行渲染。但是,可能不存在“位置”记录。在这种情况下,用户将看到标签“位置:”,但没有复选框。我想要一个显示消息的条件语句,大致如下:

{{ form_label(edit_form.locations) }}
{{ form_errors(edit_form.locations) }}
{{ form_widget(edit_form.locations) }}
{% if edit_form.locations.choices|length == 0 %}
  You haven't created any Locations yet!
{% endif %}

有人知道实现这一目标的方法吗?

最佳答案

只是为了帮助别人...
在较新的版本中,它将是:

{% if edit_form.locations.vars.choices|length == 0%}

我实际上想这样做,所以我会分享:
如果您有一个嵌入式表单,并且您想要执行相同类型的检查,除了从原型(prototype)中提取数据(如果该表单不是由任何子表单生成的)

{% if form.childForms.vars.prototype.field.vars.choices|length == 0 %}

“childForms”是嵌入的表单类型,“field”是您想要选择的选择字段...

关于symfony - 从 Twig 模板中的实体字段获取选择数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9742208/

相关文章:

php - 如何安装旧版本的 Composer

Symfony2 服务容器 : Inject array of services parameter as an argument to another service using XML

php - SImple Symfony2 'Front Page' Controller 、路由器和模板。为什么我仍然看到欢迎页面?

php - 如何在 Symfony 4 服务中使用 renderView 和 twig 模板

symfony - Twig - 为什么 vars 定义为 false 变空?

static - 在 symfony 2.2 twig 中访问静态变量

html - Symfony2 Twig form_widget 自定义 html

date - 我如何在 symfony2 中将日期对象转换为时间

symfony - 可以在Symfony2 + Twig中使用变量进行翻译吗?

Twig : auto_reload option in production recommended?