我试图用实体创建一个for。
我的控制器:
$questionnaire = $em->getRepository('questionnaireBundle:questionnaire')->findOneBy(array('id' => $id));
$form = $this->createForm(new questionnaireType(), $questionnaire);
QuestionnaireType:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('nom', 'text', array('label' => 'Nom:'));
$builder->add('nbreQuestions', 'text', array('label' => 'Nombre de questions:'));
$builder->add('type', 'entity', array('class' => 'questionnaireBundle:type', 'property' => 'type'));
$builder->add('envoyer', 'submit', array('label' => 'Enregistrer', 'attr' => array('class' => 'btn btn-success col-md-12')));
}
实体:问卷调查
namespace questionnaireBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* questionnaire
*
* @ORM\Table()
* @ORM\Entity
*/
class questionnaire {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255)
*/
private $type;
/**
* @var integer
*
* @ORM\Column(name="nbreQuestions", type="integer")
*
* @Assert\NotBlank(message="Veuillez entrer un nombre de questions.")
* @Assert\Type(type="integer")
*/
private $nbreQuestions;
/**
* Get id
*
* @return integer
*/
public function getId() {
return $this->id;
}
/**
* Set nom
*
* @param string $nom
* @return questionnaire
*/
public function setNom($nom) {
$this->nom = $nom;
return $this;
}
/**
* Get nom
*
* @return string
*/
public function getNom() {
return $this->nom;
}
/**
* Set type
*
* @param string $type
* @return type
*/
public function setType($type) {
$this->type = $type;
return $this;
}
/**
* Get type
*
* @return string
*/
public function getType() {
return $this->type;
}
/**
* Set nbreQuestions
*
* @param integer $nbreQuestions
* @return questionnaire
*/
public function setNbreQuestions($nbreQuestions) {
$this->nbreQuestions = $nbreQuestions;
return $this;
}
/**
* Get nbreQuestions
*
* @return integer
*/
public function getNbreQuestions() {
return $this->nbreQuestions;
}
public function __toString() {
return (string) $this->getNom();
}
}
字段nom,nbreQuestions将自动完全与实体问卷调查,但类型不更新!
有谁知道为什么?
由于 最好的问候
答案 0 :(得分:1)
必须在感觉背后进行第二次查询,但是你可以通过dql& amp;加入:
使用此代码:
$questionnaire = $em->createQuery('select q from questionnaireBundle:questionnaire q join q.type t where q.id = :id')->setParameter('id', $id)->getSingleResult();
$form = $this->createForm(new questionnaireType(), $questionnaire);
答案 1 :(得分:0)
未在for中选择正确类型的原因是实体类型将选项构建为
entity_id => property_value
因此,它将您的问卷调查类型的值与您的类型实体的ID进行比较,并且找不到匹配项。此外,如果您更新问卷调查对象,则类型将更改为类型实体的ID。
我在这里看到两个解决方案: