如何在Symfony的表单中添加删除复选框?

时间:2015-04-08 15:52:47

标签: php symfony checkbox

我想在表单中添加删除复选框。

我有一个USER的集合,我想要一个复选框,所以我可以(管理员)删除任何用户。

但是当我在表单

中集成删除复选框时
 ->add('delete','checkbox',array('label'=>'delete','required'=>false,));

在symfony中触发以下消息:

  

“属性”delete“和”getDelete()“,”isDelete()“,”hasDelete()“,”__ get()“之一都不存在,并且在”Site \ BlogBu​​ndle“类中具有公共访问权限实体\用户”。

我应该添加属性delete和getDelete(),以便我可以使用它吗?

这样做的正确方法是什么?

请在回答时考虑到这是一个集合。我希望为每个项目(集合)集成删除选项(通过复选框)。

2 个答案:

答案 0 :(得分:1)

默认情况下,每个表单构建器项都映射到它所属的实体。这是mapped属性。只需将此属性设置为false

即可
->add('delete', 'checkbox', array(
    'label' => 'delete',
    'required' => false,
    'mapped' => false,
));

然后处理控制器中的元素:

$form->handleRequest($request);
$deleteChecked = $form->get('delete')->getData();
// do stuff with $deleteChecked

对于一个系列,我想象这样的事情:

$form->handleRequest($request);
foreach ($form->get('collection_name') as $item) {
    $deleteChecked = $item->get('delete')->getData();
    // do stuff with $deleteChecked
}

会起作用,但是如何实际处理删除是我的深度,因为它违背了Symfony集合处理删除的方式。

HOWEVER ,为什么在收藏表单类型为a delete mechanism built into it时创建自己的delete复选框?如果您follow these steps,您应该能够删除带有DOM操作的项目。

您可以让复选框在表单提交之前删除,例如onSubmit操作或绑定,这样数据在删除之前仍会显示。

答案 1 :(得分:1)

是的,如果此表单与您的用户实体映射,那么您必须创建一个属性或get方法来执行此操作。否则,您必须将删除字段设为false false。