如何使用单个zend表单创建添加 - 编辑功能?

时间:2012-02-29 12:40:01

标签: php zend-framework zend-form

我创建了一个扩展zend表单的表单。对于添加新记录,它工作正常。但我希望相同的表单适用于更新记录。那么为正在编辑的记录设置表单字段?这种情况的最佳做法是什么?

2 个答案:

答案 0 :(得分:3)

如果您想重复使用表单,那很简单:

  1. 不要将操作放在表单中,在控制器中分配操作
    $form->setAction('/path');(这也会覆盖您在表单中设置的操作)

    < / LI>
  2. 删除当前目的不需要的任何表单元素,通常添加表单将包含更多元素,然后是更新表单。 $form->removeElement('elementName');

  3. 更改任何需要更改的标签。 $form->submit->setLabel('Update');

  4. 使用数据预填充表单。 $form->populate('dataArray');

  5. 然后像往常一样处理表单。

答案 1 :(得分:2)

使用来自数据库的数据填充控制器中的表单,但如果表单已提交,则会使用来自用户的$_POST数据填充

$entityData = $model->getSomeEntity(); //and perhaps ->toArray() if applicable
$form->populate($entityData);

if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
    $newData = $form->getValues();
    //$model->update($newData, ...);
}