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” 值,是则执行删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值