Symfony2:创建表单时如何设置表单域的值
Posted
技术标签:
【中文标题】Symfony2:创建表单时如何设置表单域的值【英文标题】:Symfony2: How to set a value of a formfield when creating a form 【发布时间】:2014-03-19 16:17:09 【问题描述】:我在调用这个路由的时候创建了一个表单:
/**
* @Route("/product/id.html")
* @Template()
*/
public function indexAction($id)
$form = $this->createForm(new AssessmentType());
return array(
'bewertungform' => $form->createView(),
'angebot' => $this->loadAngebot($id)
);
然后我想用 $id 设置这个表单中一个字段的值。 我可以在此 Action for Example 中执行此操作,例如 $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')
;
....
【问题讨论】:
Related? 不,这是另一个问题,但同一个项目 【参考方案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
);
【讨论】:
谢谢kibao!我通过在我的 AssesmentType 类中这样做来解决它:受保护的 $angebotid;公共函数 __construct(array $id = null) $this->productid = $id['id']; 然后 ->add('productid', 'text', array( 'label' => 'productid', 'data' => $this->productid ))以上是关于Symfony2:创建表单时如何设置表单域的值的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 - 重载注册表单导致 CSRF 错误(添加 github repo)
Symfony 2 在使用没有类的表单时添加 CSRF 令牌