— 文章所属小组: CakePHP
CakePHP应用开发 第三章 简单应用的开发实例(7)
  • Moon.Wong
  • 评论(0)

删除Cake待做事项中的一个事项

Cake待做事项现在可以列出了所有的事项,也可以添加新事项,修改老事项。我们现在要添 加的一个功能就是在应用中添加一个删除事项的功能。

跟之前一样,我们需要在Task控制器中添加一个新操作。但是跟其他操作不一样。删除操作 无需对应的视图。我们会在会添加一个指向删除操作的链接。但点击它时,它会弹跳出一个需要确认的对话框,一旦我们确认后,对应的事项就会被删除掉。


动手时间:添加删除功能

1,打开tasks_controller.php文件,添加一个名为delete的操作,代码如下:

function delete($id = null) {
if (!$id) {
$this->Session->setFlash('Invalid id for Task');
$this->redirect(array('action'=>'index'), null, true);
}
if ($this->Task->del($id)) {
$this->Session->setFlash('Task # '.$id.' deleted');
$this->redirect(array('action'=>'index'), null, true);
}
}

2,我们会从显示所有事项的页面删除对应的事项。因此我们需要在该页面添加一个删除对应事项的链接。打开 /CakeTooDoo/app/views文件夹之下index.ctp文件,在编辑事项的链接后面添加如下代码。

<?php echo $html->link('Delete', array('action'=>'delete', $task['Task']['id']), null, 'Are you sure you want to delete this task?'); ?>

3,将浏览器指向http://localhost/CakeTooDoo/tasks/index,打开查看所有事项的页面,我们会注意到在所有 事项的后面,增加了一个删除的链接。如果我们想要删除事项,只要点击一下这个链接即可。


怎么回事?

我们已经提到过,删除操作可以通过清单页面中事项对应的操作链接来执行。为了添加该链接, 我们使用了HTML助手的link()函数来实现这点。传送给link()函数的参数是链接的名称,在这个例子中,链接的名称为删除(Delete)。第 二个参数是一个数组,它用来指定我们想要指向的操作。在这里,我们想要指向的操作是我们刚刚创建的删除操作。因为删除操作需 要知道删除事项的ID,因此我们通过这个数组将事项的id发送给控制器。第三个参数为空,这里我们不需要使用这个参数。第四个参数是我们给控制器传送的一 个将会出现在JavaScript确认对话框中的提示信息。在这里,我们会询问用户是不是真的想要删除该事项。

一旦用户确认他们的确想要删除这个事项,他们会发送一个请求到task控制器的删除操作。 我们想要删除事项的ID存储在删除操作的第一个参数中,这个参数的名称为$id

如果$id 为空,删除操作就会不知道要删除哪个事项。因此错误信息会存进会话中,然后页面会转跳了index操作对应的视图页面。

如果id不为空,控制器会调用Task模型的删除函数,这个函数会实际删除对应的事项。在 删除成功会后,删除操作会在会话中存进一个成功的提示性信息,然后页面转跳到index页面。在index页面,删除成功信息会随事项的完整清单一道显示 出来。


前一页|目录|下一页

填写登录信息
用户名
密码