Php Symfony 2.7-嵌套集合表单类型和选项
我目前正在学习Symfony 2框架,并在嵌套集合表单类型方面有点困难 我正在尝试构建一个简单的嵌套集合表单,其中实体建模如下:Php Symfony 2.7-嵌套集合表单类型和选项,php,forms,symfony,Php,Forms,Symfony,我目前正在学习Symfony 2框架,并在嵌套集合表单类型方面有点困难 我正在尝试构建一个简单的嵌套集合表单,其中实体建模如下: MySurvey has many MyQuestions MyQuestions has many MyAnswer Each MyAnswer holds a possible value for the linked MyQuestion 我的目标是创建一个表单,该表单显示调查中的所有问题,并将每个问题的所有可用答案显示为单选按钮(选项)。 我可以将答案显示为
MySurvey has many MyQuestions
MyQuestions has many MyAnswer
Each MyAnswer holds a possible value for the linked MyQuestion
我的目标是创建一个表单,该表单显示调查中的所有问题,并将每个问题的所有可用答案显示为单选按钮(选项)。
我可以将答案显示为文本字段,但不能显示为选项
这是我的密码:
以下是实体:
class MySurvey
{
....
/**
* @ORM\ManyToMany(targetEntity="MyQuestion")
* @ORM\JoinTable(name="my_survey_questions",
* joinColumns={@ORM\JoinColumn(name="survey_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="question_id", referencedColumnName="id")}
* )
*/
protected $questions;
...
}
class MyQuestion
{
...
/**
* @ORM\Column(type="string", length=255)
*/
protected $title;
/**
* @ORM\ManyToMany(targetEntity="MyAnswer")
* @ORM\JoinTable(name="question_answers",
* joinColumns={@ORM\JoinColumn(name="question_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="answer_id", referencedColumnName="id")}
* )
*/
protected $answers;
...
}
class MyAnswer
{
....
/**
* @ORM\Column(type="string", length=255)
*/
protected $value;
...
}
以下是我的表格类型:
class MySurveyFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('questions', 'collection', array('type' => new MyQuestionFormType()));
}
...
}
class MyQuestionFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('answers', 'collection', array('type' => new MyAnswerFormType()));
}
...
}
class MyAnswerFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('value');
}
...
}
这是我的模板:
{% extends 'base.html.twig' %}
{% block body %}
<form method="post" {{ form_enctype(form) }}>
{{ form_errors(form) }}
{% set i = 0 %}
<ol>
{% for question in form.questions %}
<br />
<li>
{{ questions[i].title }}<br /><br />
{% set j = 0 %}
{% for answer in question.answers %}
{{ form_widget(question.answers[j]) }}
{% set j = j + 1 %}
{% endfor %}
{% set i = i + 1 %}
</li>
{% endfor %}
</ol>
<input type="submit" class="btn btn-primary" />
</form>
{% endblock %}
如果我在控制器中以参数形式通过调查,是否有办法在MyQuestionFormType中获取“当前问题”值,以便检索其答案
$form = $this->createForm(new MySurveyFormType($survey->getQuestions()), $survey);
感谢您的帮助
非常感谢
$form = $this->createForm(new MySurveyFormType($survey->getQuestions()), $survey);