对文章的操作中,浏览、阅读、编辑和添加功能我们都做了,只剩下删除功能了。
找到并打开Blog.php文件。(在此示例中,我们使用vim编辑器,你可以选择自己最喜欢的)
$ vim Blog.php
在类中添加如下PHP代码:
<?php
public function actionDelete($id = null)
{
// was an ID specified?
if (! $id) {
return $this->_error('ERR_NO_ID_SPECIFIED');
}
// fetch one blog article by ID
$this->item = $this->_model->blogs->fetch($id);
// did the blog article exist?
if (! $this->item) {
return $this->_error('ERR_NO_SUCH_ITEM');
}
// did the user click the delete button?
if ($this->_isProcess('delete')) {
$this->item->delete();
$this->_view = 'deleteSuccess';
}
}
改变默认视图 | |
---|---|
默认情况下,Solar页面控制器会使用和Action名一样的视图。但是,你可以通过指定$this->_view的值来改变这一默认行为。 |
在这个方法中发生了什么?
-
我们试着通过ID获取博客文章,如果文章不存在,则报错。
-
接着,我们通过检测_isProcess()函数来判断用户是否点击了'delete'按钮。如果是,我们便删除该记录,并跳转到deleteSuccess 视图(而不是默认的delete 视图)
这就是刚才发生的一切,不用怀疑,只有这么多。
这个Action使用了两张视图:一张用来显示“Are you sure?”(默认视图),另一张显示“Successfully deleted the record”。
首先,创建delete.php视图文件:
$ vim Blog/View/delete.php
。。。在刚创建的delete.php视图文件中加入以下代码:
<?php $title = $this->getTextRaw('TITLE_DELETE'); $this->head()->setTitle($title); ?> <h2><?php echo $this->getText('HEADING_DELETE'); ?></h2> <h3><?php echo $this->escape($this->item->title); ?></h3> <?php echo $this->nl2p($this->item->body); ?> <?php echo $this->form() ->addProcess('delete') ->fetch(); ?>
简单来说,这张视图显示将被删除的博客文章,并且生成一张只含“delete”按钮的表单(“delete”过程)。
接下来,创建deleteSuccess.php视图文件。
$ vim Blog/View/deleteSuccess.php
。。。在刚创建的deleteSuccess.php视图文件中加入以下代码:
<p><?php echo $this->getText('TEXT_DELETED'); ?></p>
这张视图只做了一件事,就是:显示一些静态文本来表明该记录已被删除。
你现在可以浏览http://localhost/index.php/blog/delete/3,还可以点击“Delete”按钮删除这篇博文。