Symfony2来自实体领域的选择

时间:2014-10-01 22:14:10

标签: symfony

我有一个实体ChoiceQuestion,它有一个字段选项。 选项定义为数组。

<?php

namespace Survey\SurveyBundle\Entity;

use Survey\SurveyBundle\Entity\BaseQuestion;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @author GKLESSE
 *
 */
class RadioQuestion extends BaseQuestion {
    const TYPE = 'radio';
    /**
    /* @ORM\Column(type="array")
     */
    protected $options;
    /**
     * @var integer
     */
    protected $id;

    /**
     * @var string
     */
    protected $question;

    /**
     * @var integer
     */
    protected $questionOrder;

    /**
     * @var \Survey\SurveyBundle\Entity\Survey
     */
    protected $survey;

    public function __construct(){
        $this->questiontype = self::TYPE;
    }

    /**
     * Set options
     *
     * @param array $options
     * @return RadioQuestion
     */
    public function setOptions($options)
    {
        $this->options = $options;

        return $this;
    }

    /**
     * Get options
     *
     * @return array 
     */
    public function getOptions()
    {
        return $this->options;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set question
     *
     * @param string $question
     * @return RadioQuestion
     */
    public function setQuestion($question)
    {
        $this->question = $question;

        return $this;
    }

    /**
     * Get question
     *
     * @return string 
     */
    public function getQuestion()
    {
        return $this->question;
    }

    /**
     * Set questionOrder
     *
     * @param integer $questionOrder
     * @return RadioQuestion
     */
    public function setQuestionOrder($questionOrder)
    {
        $this->questionOrder = $questionOrder;

        return $this;
    }

    /**
     * Get questionOrder
     *
     * @return integer 
     */
    public function getQuestionOrder()
    {
        return $this->questionOrder;
    }

    /**
     * Set survey
     *
     * @param \Survey\SurveyBundle\Entity\Survey $survey
     * @return RadioQuestion
     */
    public function setSurvey(\Survey\SurveyBundle\Entity\Survey $survey = null)
    {
        $this->survey = $survey;

        return $this;
    }

    /**
     * Get survey
     *
     * @return \Survey\SurveyBundle\Entity\Survey 
     */
    public function getSurvey()
    {
        return $this->survey;
    }
    /**
     * @var string
     */
    protected $questiontype;


    /**
     * Set questiontype
     *
     * @param string $questiontype
     * @return RadioQuestion
     */
    public function setQuestiontype($questiontype)
    {
        $this->questiontype = $questiontype;

        return $this;
    }

    /**
     * Get questiontype
     *
     * @return string 
     */
    public function getQuestiontype()
    {
        return $this->questiontype;
    }
    /**
     * @var \Doctrine\Common\Collections\Collection
     */
    protected $answers;


    /**
     * Add answers
     *
     * @param \Survey\SurveyBundle\Entity\Answer $answers
     * @return RadioQuestion
     */
    public function addAnswer(\Survey\SurveyBundle\Entity\Answer $answers)
    {
        $answers->setQuestion($this);
        $this->answers[] = $answers;

        return $this;
    }

    /**
     * Remove answers
     *
     * @param \Survey\SurveyBundle\Entity\Answer $answers
     */
    public function removeAnswer(\Survey\SurveyBundle\Entity\Answer $answers)
    {
        $this->answers->removeElement($answers);
    }

    /**
     * Get answers
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getAnswers()
    {
        return $this->answers;
    }
}

在Symfony2中,我想创建一个表单,并作为该表单的一部分,将该实体的选项显示为&#34;选择&#34;。

我实施了以下内容:

$form = $this->createFormBuilder();
$form->add($question->getQuestionOrder(), 'choice',array('label' => $question->getQuestion(), 'choices' => $question->getOptions()));
$formbuilder->add($question->getId(), 'checkbox',array('label' => $question->getQuestion(), 'choices' => $question->getOptions()));

然而,在检查页面时,我收到以下错误,这对我没有意义:

The option "choices" does not exist. Known options are: "action", "attr", "auto_initialize", "block_name" ...

为什么Symfony2告诉我选项不存在,因为它显然是表单设置的一部分?

实现这个的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现了错误。

而不是使用表单类型&#34;复选框&#34;要呈现多个选择,您需要使用&#34; choice&#34;选项:

"multiple" => true, "expanded" => true