我在调用此路线时创建了一个表单:
/**
* @Route("/product/{id}.html")
* @Template()
*/
public function indexAction($id) {
$form = $this->createForm(new AssessmentType());
return array(
'bewertungform' => $form->createView(),
'angebot' => $this->loadAngebot($id)
);
}
然后我想用$ id设置此表单中字段的值。 我是否可以在此动作示例中执行此操作,例如$ form-> setValue('productid',$ id)?
这是我的AssessmentType类:
..../**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('stars', 'choice', array('choices' => array('1' => '1 star', '2' => '2 stars', '3' => '3 stars', '4' => '4 stars', '5' => '5 stars')))
->add('comment')
->add('productid')
;
}....
答案 0 :(得分:1)
如果productid
字段为entity
类型,则必须将实体对象作为此字段的数据传递,而不是其ID。
所以你的行动应该是这样的:
/**
* @Route("/product/{id}.html")
* @Template()
*/
public function indexAction($id) {
$angebot = $this->loadAngebot($id);
$assessment = new Assessment();
$assessment->setProduct(angebot); // method that sets `productid` value
$form = $this->createForm(new AssessmentType(), $assessment);
return array(
'bewertungform' => $form->createView(),
'angebot' => $angebot
);
}