Zend Framework 教程 – 编辑专辑

作者 FarLee 2012年4月12日 22:42:16   ‖浏览(5,513)

Zend Framework 教程 >> 编辑专辑

继续上一节教程,如何编辑专辑?这和添加一张专辑基本上是差不多的,代码也很像,编写IndexController 类中的 editAction():

...
function editAction()
{
$form = new Application_Form_Album();
$form->submit->setLabel('Save');
$this->view->form = $form;

if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$id = (int)$form->getValue('id');
$artist = $form->getValue('artist');
$title = $form->getValue('title');
$albums = new Application_Model_DbTable_Albums();
$albums->updateAlbum($id, $artist, $title);

$this->_helper->redirector('index');
} else {
$form->populate($formData);
}
} else {
$id = $this->_getParam('id', 0);
if ($id > 0) {
$albums = new Application_Model_DbTable_Albums();
$form->populate($albums->getAlbum($id));
}
}
}
...

让我们一起来看看上面的代码和上一节添加专辑的不同之处。首先,给用户显示表单时我们要从数据库中获取待编辑的这张专辑的artist 和 title值,并填充到表单的相应元素中去。这部分是在代码的最后:

$id = $this->_getParam('id', 0);
if ($id > 0) {
$albums = new Application_Model_DbTable_Albums();
$form->populate($albums->getAlbum($id));
}

注意当请求不是POST时才执行上面的代码,因为POST表明我们已经填写了表单并要处理提交的表单数据了。我们使用_getParam()方法从URL请求中获取id值。然后使用model中定义的方法获取数据库行,直接填充到表单元素中(现在我们知道model中的getAlbum()方法为什么要返回一个数组了)。

表单验证通过后,将数据保存回到相应的数据库行中去。这是通过model的updateAlbum() 方法完成的:

$id = $form->getValue('id');
$artist = $form->getValue('artist');
$title = $form->getValue('title');
$albums = new Application_Model_DbTable_Albums();
$albums->updateAlbum($id, $artist, $title);

view 模板edit.html和add.html 是一样的。

<?php
$this->title = "Edit album";
$this->headTitle($this->title);
echo $this->form ;
?>

现在你已经知道zend framework 框架如何编辑专辑了。


来说兩句