【问题标题】:How add a delete checkbox in a form in Symfony?如何在 Symfony 的表单中添加删除复选框?
【发布时间】:2015-06-13 16:41:24
【问题描述】:

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

我有一个 USER 集合,我想在每个用户旁边设置一个复选框,以便我可以(管理员)删除任何用户。

但是当我在表单中集成一个删除复选框时

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

以下消息在 symfony 中被触发:

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

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

正确的做法是什么?

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

【问题讨论】:

标签: php symfony checkbox


【解决方案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 集合处理删除的方式背道而驰。

但是,当集合表单类型有a delete mechanism built into it 时,为什么要创建自己的delete 复选框?如果你follow these steps,你应该可以通过 DOM 操作删除项目。

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

【讨论】:

  • Thks sjagr,我使用了 mapped false 选项,因为我不想在提交之前从视图页面中直观地删除用户。我还有一个问题。 我现在如何获取 Delete 的值?由于表单包含一个集合,并且对于每个集合,我都有一个删除复选框... form->get('delete')->getData() 将不起作用
  • 这不起作用,我已经尝试过了,它触发了以下错误消息:**错误:调用数组上的成员函数 get() **
【解决方案2】:

是的,如果此表单与您的用户实体映射,那么您必须创建一个属性或获取方法来这样做。否则,您必须将删除字段设置为映射错误。

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多