gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:34:16 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com