Php 在Symfony表单中访问对象属性
我试图显示一个带有复选框的课程列表,允许用户从列表中选择任意数量的课程。我是Symfony的新手,尝试使用表单方法,但除了使用choice_标签外,不了解如何显示对象的其他属性 如果我只是通过课程对象,我可以简单地使用: 模板:Php 在Symfony表单中访问对象属性,php,symfony,twig,symfony4,Php,Symfony,Twig,Symfony4,我试图显示一个带有复选框的课程列表,允许用户从列表中选择任意数量的课程。我是Symfony的新手,尝试使用表单方法,但除了使用choice_标签外,不了解如何显示对象的其他属性 如果我只是通过课程对象,我可以简单地使用: 模板: <form> {% for course in courses %} <div class="row"> <div><input type="checkbox" name="cou
<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 builder,我的模板看起来如下所示:
{{ form_start(form) }}
<div class="row">
<div>{{ form_row(form.courses) }}</div>
</div>
{{ form_end(form) }}
如何访问表单行中的这些附加对象属性名称、描述等?在这种情况下,是否有理由使用表单生成器而不是第一种“手动”方法?总之,我需要对给定表单行中的对象属性进行粒度控制,仅使用choice_label属性似乎是不够的。什么是潜在的解决方案?首先,对于访问选项标签的每个选项,它相当简单。。。因为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) }}
注意:标签是传递给Form Builder中«choices»选项的数组中的键值
资料来源:
如何自定义表单呈现:谢谢您的回复。我已经阅读了该文档并理解了标签的用法。但是,问题是我想显示5个左右与对象相关的属性,例如名称、描述、学期等,而不仅仅是一个标签。据我所知,表单组件似乎不能接受自定义属性?据我所知,您不能。你必须把所有的东西都放在标签上,或者分别对待每个复选框。它只接受小部件范围的帮助。您还可以使用多个复选框类型+multiple=false,而不是使用ChoiceType+multiple=true。我不知道我是否足够清楚。