symfony - Symfony / Twig:过滤器过滤集合
问题描述
新手来了 使用 Symfony 3.4。
我有一个使用表单生成器创建的 EntityType 表单类型的集合。我正在尝试有选择地将它们存放在页面上。我想在我的模板上循环遍历它们几次,根据特定标准(例如,“HiddenType”子类型的值)吐出其中的一些。
例如,假设我有一个电影集合,其中一些具有“评级”隐藏类型。我的任务是在几个单独的“评级”部分(即一个部分中的所有 R 级电影)有选择地吐出它们。
编辑:但是!评级是用户估算的;在别处动态生成。所以我不能只提前制作有限数量的“部分”。
我的第一个想法是
{% for rating in ratings %}
<h1>{{rating}}-Rated Movies</h1>
{% for movie in form.movies %}
{% if movie.rating = "R" %}
{{movie}} // put movie formtype/ collection member here somehow...?
{% endif %}
{% endfor %}
{% endfor %}
但我也读到树枝有一个“过滤器”过滤器:
{% for rating in ratings %}
<h1>{{rating}}-Rated Movies</h1>
{% for movie in movies|filter(m=> m.rating == rating) -%}
{{ m }} //put movie formtype/ collection member here somehow...?
{% endfor %}
{% endfor %}
但是,无论哪种方式,我都无法真正协调我熟悉的用于将表单转换为实际 html(例如form_row()
)的函数与这些方法中的任何一种。
有任何想法吗?
解决方案
您需要按评分在表单中订购电影。然后在您的模板中执行以下操作:
{% set rating = null %}
{% for movieForm in form.movies %}
{% set movie = movieForm.vars.value %} <= check if this is the movie entity by dumping it
{% if movie.rating != rating %}
<h1>{{ movie.rating }}</strong>
{% set rating = movie.rating %}
{% endif %}
{{ form_row(movieForm) }}
{% endfor %}
推荐阅读
- reactjs - 将包含 React 类代码的字符串转换为可用组件?
- shell - 仅使用 git bash 的 ssh 公钥共享
- python - AttributeError:“Read_csv”对象没有属性“datetime_array”
- character-encoding - 为什么 CP850 是 Windows 10 终端中的默认编码?
- mongodb - MongoDB 辅助副本集与主副本同步失败(在报告副本中)
- java-8 - 根据特定条件跳过 CompletableFuture 链
- javascript - 本地数据不是 ajax 的 DataTable 刷新按钮
- html - 左侧的徽标,而文本居中并与徽标平行
- key - iptables规则和zabbix Item key
- azure - Azure App Service 应用程序设置 - 看不到密钥保管库参考详细信息