Symfony2:创建绑定到具有非属性字段的实体的表单

时间:2012-10-31 22:39:17

标签: forms symfony doctrine

以下(简单)问题:

  $user = new User();
  $user->setEventid(2);
  $user->setT(new \DateTime('now'));

  $em = $this->getDoctrine()->getManager();
  $em->persist($user);
  $em->flush();

  $form = $this->createFormBuilder($user)
    ->add('email', 'email')
    ->add('terms', 'checkbox', array(
          'label'     => 'Read terms?',
          'required'  => true))
    ->getForm();

这是我的代码。电子邮件是用户的财产,条款不是。 我希望他们用户保存他们的电子邮件并检查条款复选框,但我只需要保存电子邮件,而不是如果他们选中复选框 - 如果他们不能提交表单。

你知道我的意思吗?我很难实现这一点;)

第二个问题:我如何为渲染的from-tag提供一个id-attribute以便在jquery中进一步处理?

2 个答案:

答案 0 :(得分:2)

要将实体中不存在的字段添加到表单,请使用:

->add('terms', 'checkbox', array(
    'label'         => 'Read terms?',
    'required'      => true,
    'mapped'        => false, // this works since Symfony 2.1
    'property_path' => false, // this works since Symfony 2.0
))

Symfony为每个表单元素生成一个ID;只需打开呈现的页面源并查看所需元素的ID。

答案 1 :(得分:0)

如果您的实体中没有“条款”字段,则不会保存。 对于你的第二个问题,在树枝中为一个表单设置一个id很简单,简单地说:

{{ form_label(form.name, 'Your Name', { 'attr': {'id': 'foo'} }) }}