Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的表单Symfony2中创建重复字段_Symfony - Fatal编程技术网

在我的表单Symfony2中创建重复字段

在我的表单Symfony2中创建重复字段,symfony,Symfony,我正在做一个大学项目,希望所有学生都能参加。我已经创建了一个包含3个字段的模型,即date、present(布尔值)和student_id。现在,当我试图从中生成表单时,它将只显示这3个字段。但是我想要全班的学生。因此,我为学生创建了一个循环,并创建了一个考勤对象数组。现在我被卡住了,我不知道如何将它们传递到我的小树枝文件中,而且我也不知道这样做是否正确。这是我的模型和控制器代码 形式 控制器 我如何呈现表单,使其使用单独的复选框显示所有学生 HTML.TWIG {%block body%} {

我正在做一个大学项目,希望所有学生都能参加。我已经创建了一个包含3个字段的模型,即date、present(布尔值)和student_id。现在,当我试图从中生成表单时,它将只显示这3个字段。但是我想要全班的学生。因此,我为学生创建了一个循环,并创建了一个考勤对象数组。现在我被卡住了,我不知道如何将它们传递到我的小树枝文件中,而且我也不知道这样做是否正确。这是我的模型和控制器代码

形式 控制器 我如何呈现表单,使其使用单独的复选框显示所有学生

HTML.TWIG
{%block body%}
{{form_errors(form)}}
{{form_行(forms[0].date)}
报名人数。
学生姓名
目前
{学生百分比中的学生百分比}
{{student.enrolmentNo}
{{student.firstname}{{student.lastname}}
{{form_row(form.present)}
{%endfor%}
{{form_rest(form)}
{%endblock%}

未测试。但是应该有一些修改。 控制器中的循环:

foreach($students as $key => $student){

    $attendance[$key] = new StudentAttendance();
    $form[$key] = $this->createForm(new StudentAttendanceType(), $attendance[$key])->createView();
}
返回数组:

return $this->render('CollegeStudentBundle:StudentAttendance:take-attendance.html.twig', array(
    'form' => $form, 'department' => $Department_Id, 'students' => $students,
));
在模板中:

{% for sform in form %}
    {{ form_widget(sform) }}
{% endfor %}

您将变量
students
返回到模板,并在twig中调用
student.firstname
,它应该是
students.firstname
,并且您应该将
'form'=>$form->createView()
保存在控制器的返回中


我认为它应该工作得更好,希望这有帮助

我想你可能走错了方向。S2已经开始处理现成的阵列

通读:

您基本上希望创建一个学生主列表表单,然后嵌入一个学生注意力表单。然后,您可以将学生数组传递给主窗体,所有数组处理都将神奇地发生

在学生名单表中,您将看到如下内容:

public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('students', 'collection', array('type' => new StudentAttendenceType()));

谢谢你的回复,但这不起作用。它给出以下错误在呈现模板期间引发异常(“可捕获的致命错误:传递给Symfony\Bridge\Twig\Extension\FormExtension::renderWidget()的参数1”)必须是第19行的Symfony\Component\Form\FormView、Symfony\Component\Form\Form实例,在/opt/lampp/htdocs/college/app/cache/dev/twig/a0/4b/94e3cc19d73f275eee3e95d5d19d.php中调用,并在/opt/lampp/htdocs/college/vendors/Symfony/src/Symfony/Bridge/twig/Extension/FormExtension.php第159行中定义在第2行的CollegeStudentBundle:StudentAttentince:take-Attention.html.twig中。当我删除当前twig文件的所有内容时,此操作有效。。你能帮我定制一下小树枝吗。我正在将细枝模板文件粘贴到我的问题中。当您尝试提交其中一个表单时,此结构将导致问题。首先,在创建表单之后创建视图,您将无法处理请求。然后出现了多个问题。Cerad的解决方案实际上要好得多。
return $this->render('CollegeStudentBundle:StudentAttendance:take-attendance.html.twig', array(
    'form' => $form, 'department' => $Department_Id, 'students' => $students,
));
{% for sform in form %}
    {{ form_widget(sform) }}
{% endfor %}
public function buildForm(FormBuilder $builder, array $options)
{
    $builder->add('students', 'collection', array('type' => new StudentAttendenceType()));