【问题标题】:Zend Form Multiple RecordsZend Form 多条记录
【发布时间】:2010-09-29 12:35:50
【问题描述】:
我开始掌握 Zend_Form 并且可以创建一个表单来添加/编辑单个数据库记录,但现在我正在尝试创建一个表单来编辑单个页面上的多个记录。例如,如果我有一个运动队表格,而另一个分配给他们球队的球员表格,我希望能够点击我网站上的一个球队,并将所有球员列为行,并输入编辑他们的名字,出生日期等,底部有一个提交按钮以保存任何更改。
需要注意的一点是,可以在页面上编辑的记录数量不定;这不是一个固定的数量。
任何指针/帮助将不胜感激。
谢谢。
【问题讨论】:
标签:
zend-framework
zend-form
【解决方案1】:
我使用下面的代码从数据库中删除多个项目。
在索引页面上(我的数据库记录列表):
<form method="post" action="<?php echo $this->baseUrl().'/admin/pages/deleteMultiple'; ?>">
<td class="checkboxTable"><input name="remove[<?php echo $data[$row]->id; ?>]" type="checkbox" id="checkbox[]" value="<?php echo $data[$row]->id; ?>"/></td>
<input class="deleteMultipleButtonBottom" name="deleteMultiple" type="submit" id="deleteMultiple" value="<?php echo $this->translate('Delete selected'); ?>">
</form>
用户看到一个确认页面:
<form method="post">
<input type="hidden" name="removeId" value="<?php echo implode($_POST['remove'], ','); ?>" />
<input class="deleteYes" type="submit" name="deleteMultiple" value="Yes" />
<input class="deleteNo" type="submit" name="deleteMultiple" value="No" />
</form>
而我的动作是这样的:
if($this->getRequest()->isPost())
{
if($this->getRequest()->isPost('remove'))
{
$this->view->pages = $this->pagesService->GetPages($this->getRequest()->getPost('remove'));
if($this->getRequest()->getPost('deleteMultiple') == 'Yes')
{
$this->pagesService->DeleteMultiplePages($this->getRequest()->getPost('removeId'), $this->view->user->username, $this->getRequest()->getPost('countedItems'));
}
elseif($this->getRequest()->getPost('deleteMultiple') == 'No')
{
$this->_helper->flashMessenger(array('message' => $this->view->translate('The pages were <u>not</u> deleted'), 'status' => 'notice'));
$this->_helper->redirectToIndex();
}
}
}
在我的服务页面中:
public function DeleteMultiplePages($id)
{
$this->pages->delete('id IN (' . $id . ')');
}
这种方法应该适用于更新值。