我想在表单中添加删除复选框。
我有一个USER的集合,我想要一个复选框,所以我可以(管理员)删除任何用户。
但是当我在表单
中集成删除复选框时 ->add('delete','checkbox',array('label'=>'delete','required'=>false,));
在symfony中触发以下消息:
“属性”delete“和”getDelete()“,”isDelete()“,”hasDelete()“,”__ get()“之一都不存在,并且在”Site \ BlogBundle“类中具有公共访问权限实体\用户”。
我应该添加属性delete和getDelete(),以便我可以使用它吗?
这样做的正确方法是什么?
请在回答时考虑到这是一个集合。我希望为每个项目(集合)集成删除选项(通过复选框)。
答案 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。