在Symfony2中创建“同意条款”复选框的好方法是什么?

时间:2012-09-17 17:23:27

标签: symfony

我的表单上有“我已阅读并同意服务条款”复选框。必须检查该框以使表单被视为有效,但当然没有理由将该值保存到数据库,并且没有理由向实体添加属性。

在Symfony2中实现此类功能的好方法是什么,除非选中此框,否则表单不会被视为有效?

2 个答案:

答案 0 :(得分:5)

这个问题很老了,Symfony已经对此进行了更新。对于Symfony 3.x,您可以执行以下操作:

$builder->add('terms', CheckboxType::class, [
    'mapped' => false,
    'constraints' => new IsTrue(),
]);

答案 1 :(得分:2)

来自symfony docs

  

将表单映射到对象时,将映射所有字段。表单上的任何字段在映射对象上不存在将导致抛出异常。   如果您需要表单中的额外字段(例如:“您是否同意这些术语”复选框),而这些字段将不会映射到基础对象,则需要将property_path选项设置为false:

use Symfony\Component\Form\FormBuilderInterface;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('task');
    $builder->add('dueDate', null, array('property_path' => false));
}
  

可以在控制器中访问现场数据:

$form->get('dueDate')->getData();