2012-02-29 50 views
2

我创建了一个扩展zend窗体的窗体。为了添加新记录,它工作正常。但我想要相同的表单来更新记录。所以表单字段被设置为正在编辑的记录?这种情况的最佳做法是什么?如何使用一个zend表单创建添加 - 编辑功能?

+0

昨天你问我同样的问题,看看[我的回答](http://stackoverflow.com/questions/9482594/zend-form-validator-callback-how-to-exclude-a-username) (最后的评论)。请注意,为了使事情更容易,您应该使您的数据库列名称与您的表单字段名称匹配。 – Liyali 2012-02-29 12:51:54

回答

3

如果你想重用的形式填充,这是很简单的:

  1. 不要把行动的形式,在你的控制器分配的动作
    $form->setAction('/path');(这也将重写动作,你在表单中设置)

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

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

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

然后就像平常一样处理表格。

2

填充与来自DB数据控制器的形式,但如果形式提交,它将被$_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, ...); 
} 
相关问题