我正在尝试显示一个带有复选框的课程列表,允许用户从列表中选择任意数量的课程。我是Symfony的新手,正在尝试采用表单方法,但是不了解如何使用choice_label来显示对象的其他属性。
如果我只是传递课程对象,则可以简单地使用:
模板:
<form>
{% for course in courses %}
<div class="row">
<div><input type="checkbox" name="course[]" value="{{ course.id }}"></div>
<div>{{ course.name }}</div>
<div>{{ course.description }}</div>
<div>{{ course.semester }}</div>
</div>
{% endfor %}
</form>
使用表单生成器,看来我的模板看起来像这样:
{{ form_start(form) }}
<div class="row">
<div>{{ form_row(form.courses) }}</div>
</div>
{{ form_end(form) }}
如何在表单行中访问这些其他对象属性(名称,描述等)?在这种情况下,是否有理由使用表单构建器而不是第一种“手工”方法?总之,我需要对给定表单行内的对象属性进行精细控制,仅choice_label属性似乎还不够。什么是潜在的解决方案?
答案 0 :(得分:1)
首先,对于访问选择标签的每个选项,这非常简单...因为 form.courses是一个数组。 您可以通过执行以下操作来访问各个复选框:
{{ form_widget(form.courses[0]) }}
您可以使用循环来单独访问它们。为了自定义表单的呈现方式,您可以使用 form_errors , form_label 和 form_help 函数,因此最终代码将如下所示:
{{ form_start(form) }}
{{ form_errors(form) }}
{% for course in form.courses %}
<div class="row">
{{ form_widget(course) }}
{{ form_label(course) }}
</div>
{% endfor %}
{{ form_help(form.courses) }}
{{ form_end(form) }}
注意:标签是数组中传递给“表单构建器”中“选项”选项的键值。
来源:
如何自定义表单呈现:https://symfony.com/doc/current/form/form_customization.html