Symfony2:如何在创建表单时设置表单域的值

时间:2014-02-19 11:08:26

标签: php symfony

我在调用此路线时创建了一个表单:

/**
     * @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')
;
}....

1 个答案:

答案 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
    );
}