`
webcode
  • 浏览: 5944250 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics