Zend Framework 教程 – 删除专辑

作者 FarLee 2012年4月12日 22:42:18   ‖浏览(9,751)

Zend Framework 教程 >> 删除专辑

为了使我们的应用看起来更完整,Zend Framework 教程的最后添加一个删除专辑的功能。在前面的专辑列表中,每一张专辑右侧都有一个Delete的删除链接,有一种很不成熟的方法是在点击这个链接后专辑就会直接被删除。还记得HTTP规范吗?我们尽量不要使用GET 去执行不可逆转的删除操作,而应该用POST。

比如当用户点击了上面的delete链接后,将显示一个简单的表单,如果用户确认点了这里的“YES”按钮后,我们再去执行删除。因为这个表单很简单,我们可以不用 Zend_Form 直接在view里面写form表单的代码(当然用Zend_Form也可以)。

下面先修改控制器中的action 代码(IndexController::deleteAction()):

zf-tutorial/application/controllers/IndexController.php
...
public function deleteAction()
{
if ($this->getRequest()->isPost()) {
$del = $this->getRequest()->getPost('del');
if ($del == 'Yes') {
$id = $this->getRequest()->getPost('id');
$albums = new Application_Model_DbTable_Albums();
$albums->deleteAlbum($id);
}
$this->_helper->redirector('index');
} else {
$id = $this->_getParam('id', 0);
$albums = new Application_Model_DbTable_Albums();
$this->view->album = $albums->getAlbum($id);
}
}
...

和add/edit action一样,我们使用Request 的 isPost() 方法决定是显示选择删除与否的表单,还是执行删除动作。使用 Application_Model_DbTable_Albums 这个model 的deleteAlbum() 方法删除数据行。如果请求不是POST, 就查找id 参数的值,并获取相应的数据库记录将它赋值给view。

view 脚本只有一个简单的form表单:

zf-tutorial/application/views/scripts/index/delete.phtml
<?php
$this->title = "Delete album";
$this->headTitle($this->title);
?>
<p>Are you sure that you want to delete
'<?php echo $this->escape($this->album['title']); ?>' by
'<?php echo $this->escape($this->album['artist']); ?>'?
</p>
<form action="<?php echo $this->url(array('action'=>'delete')); ?>" method="post">
<div>
<input type="hidden" name="id" value="<?php echo $this->album['id']; ?>" />
<input type="submit" name="del" value="Yes" />
<input type="submit" name="del" value="No" />
</div>
</form>

在这段代码中,给用户显示了一段确认信息,以及包含YES 和No 按钮的表单。在action中,我们检查是否提交了”YES” 值,是则执行删除。


“Zend Framework 教程 – 删除专辑”文章评论(1)

  1. 拨云剑

    好文拜读. farlee.info 好样的.
    国内谷歌总被墙,烦。发现个在线google代理,真不错。http://www.boyunjian.com/do/googlepx/index.html?fm=9001

来说兩句