以下(简单)问题:
$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中进一步处理?
答案 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'} }) }}