【发布时间】:2015-06-24 14:34:10
【问题描述】:
在我的 Symfony 2 表单上,我有 2 个复选框。文档说明
"如果该框被选中,该字段将被设置为true,如果该框是 未选中,该值将设置为 false"
这是我希望发生的事情,但是当未选中复选框时,我实际上什么也得不到。我意识到如果未选中,HTML 表单上的复选框通常不会返回任何内容,我通常会在后端添加一些逻辑来处理它,但听起来 Symfony 应该为我这样做,而不是。
我做错了什么或错过了什么?
我的表单类型如下所示:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('fullname', 'text')
->add('screened', 'checkbox', array(
'label' => 'Enable screening emails?' ))
->add('dedupe', 'checkbox', array(
'label' => 'Enable live dedupeing?'))
);)
树枝模板的相关部分如下所示:
<div class="form-group">
<div class="input-group col-sm-offset-2 col-sm-10">
<div class="checkbox col-sm-6">
{{ form_widget(form.screened) }}
{{ form_label(form.screened) }}
</div>
<div class="checkbox col-sm-6">
{{ form_widget(form.dedupe, {'attr': {'required': 'false'}}) }}
{{ form_label(form.dedupe) }}
</div>
</div>
</div>
在此处的控制器中创建表单:
/**
* Creates a new User entity.
*
*/
public function createAction(Request $request)
{
$entity = new User();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$this->get('project_login.user_manager')->setUserPassword($entity, $form->get('password')->getData());
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('user_show', array('id' => $entity->getId())));
}
return $this->render('ProjectLoginBundle:User:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
/**
* Creates a form to create a User entity.
*
* @param User $entity The entity
*
* @return \Symfony\Component\Form\Form The form
*/
private function createCreateForm(User $entity)
{
$form = $this->createForm(new UserType(), $entity, array(
'action' => $this->generateUrl('user_create'),
'method' => 'POST', 'validation_groups' => array('create')
));
$form->add('submit', 'submit', array('label' => 'Create'));
return $form;
}
【问题讨论】:
-
我不太清楚是什么问题...你能澄清一下吗?
-
当表单被提交并且复选框被取消选中时,复选框的值不会被返回。 Thios 是我对 HTML 表单的期望,但在 Symfony 文档中,当未选中时,它应该返回 False。为什么我一无所获,反而是假的?
标签: symfony checkbox symfony-forms