我有一个实体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告诉我选项不存在,因为它显然是表单设置的一部分?
实现这个的正确方法是什么?
答案 0 :(得分:0)
我发现了错误。
而不是使用表单类型&#34;复选框&#34;要呈现多个选择,您需要使用&#34; choice&#34;选项:
"multiple" => true, "expanded" => true