Php Symfony 2.7-嵌套集合表单类型和选项

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 我的目标是创建一个表单,该表单显示调查中的所有问题,并将每个问题的所有可用答案显示为单选按钮(选项)。 我可以将答案显示为

我目前正在学习Symfony 2框架,并在嵌套集合表单类型方面有点困难

我正在尝试构建一个简单的嵌套集合表单,其中实体建模如下:

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);