Zend形成多个记录

时间:2010-09-29 12:35:50

标签: zend-framework zend-form

我正在处理Zend_Form,并且可以创建一个表单来添加/编辑单个数据库记录,但现在我正在尝试创建一个表单来编辑单个页面上的多个记录。例如,如果我有一个体育团队的表格,另一个分配给他们团队的球员表格,我希望能够点击我网站上的团队并将所有球员列为带有输入的行来编辑他们的名字,出生日期等,底部有一个提交按钮以保存任何更改。

需要注意的一点是,可以在页面上编辑可变数量的记录;它不是固定数量。

非常感谢任何指针/帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

我使用下面的代码从数据库中删除多个项目。

在索引页面(我的数据库记录列表):

<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 . ')');
    }

此方法适用于更新值。