cakephp - 从表中删除多个选定项目

标签 cakephp checkbox controller

在我的表格中,我有一列,每行都有一个复选框。我希望能够删除所有选定的项目。我从这个网站上找到了代码,并为我自己的东西修改了它。 Link

我遵循网站对复选框的命名约定,如下所示:

<td>  <?php echo $this->Form->checkbox('LocalClocks.id.['.$LocalClock['LocalClock']['id'].']', array('value' => $LocalClock['LocalClock']['id'])); ?></td>

这是我的 Controller 中 deleteSelected() 函数的代码:

    public function deleteSelected()
    {
        foreach($this->data['LocalClocks'] as $key => $value)
        {
            if($value != 0)
            {
                $this->LocalClock->del($value);
            }
        }
        $this->redirect($this->referer());
    }

这是实际删除按钮的代码(以防万一):

<?php echo $this->Form->postLink('Delete Selected', array('action' => 'deleteSelected'), array('confirm' => 'Are you sure?')); ?>

我认为有几件事可能是问题:

  1. 代码是为旧版本的 cake 编写的,我认为网站上说的是 1.3,但我不知道在现有代码中更新/更正什么才能使其正常工作。
  2. 删除按钮与 cakephp 网站博客教程中的删除按钮相同。我所做的唯一更改是删除要删除的项目的 id,因为我删除的不是单个项目,而是多个项目。

任何帮助都会很棒。

最佳答案

您的复选框输入应该是这样的

echo $this->Form->checkbox('LocalClocks.'.$LocalClock['LocalClock']['id'], array(
  'value' => $LocalClock['LocalClock']['id'],
  'hiddenField' => false
));

这将创建一个如下所示的数据数组

array(
  'LocalClocks' => array(
    1 => 1,
    42 => 1
  )
);

并且会从数据数组中省略任何未选中的,因为我们没有使用隐藏字段。最后,只需对您的操作进行一些更改

public function deleteSelected()
{
    foreach($this->request->data['LocalClocks'] as $key => $value)
    {
       $this->LocalClock->delete($key);
    }
    $this->redirect($this->referer());
}

我更喜欢使用 Model::delete()Model::deleteAll() 因为它运行回调,而 deleteAll 不.

最后,您的链接实际上是一个提交按钮。这会将数据 POST 到 Controller 。

echo $this->Form->end('Submit');

如果您想使用 ajax,请使用 JsHelper改为提交。下面创建一个 Ajax 提交,用操作的结果更新 dom 元素 #mytable(在本例中是您重定向到的引用者)。

echo $this->Js->submit('Submit', array(
  'update' => '#mytable'
));
echo $this->Form->end();

关于cakephp - 从表中删除多个选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11139832/

相关文章:

jquery - 如何使用 jQuery/AJAX 加载 reCaptcha 表单,同时保留 reCaptcha 脚本?

javascript - 如何在 CakePHP 中添加 onChange 事件来选择标签?

php - 在 CakePHP 中一次存储多行

PHP foreach循环插入数据库

wpf - 如何以编程方式单击 WPF 中的复选框?

javascript - ckeditor5 & CakePHP 2.3 : How do I make the tables work?

excel - 如何清除工作表中的所有复选框并更新连接到它们的公式

c# - 从 MVC Controller 将 HTML 渲染为字符串

java - SpringMVC : Can I specify a @ModelAttribute be populated only for specific controller methods?

javascript - 如何正确地与另一个 Controller 管理的 View 交互?