我创建了一个扩展zend表单的表单。对于添加新记录,它工作正常。但我希望相同的表单适用于更新记录。那么为正在编辑的记录设置表单字段?这种情况的最佳做法是什么?
答案 0 :(得分:3)
如果您想重复使用表单,那很简单:
不要将操作放在表单中,在控制器中分配操作
$form->setAction('/path');
(这也会覆盖您在表单中设置的操作)
删除当前目的不需要的任何表单元素,通常添加表单将包含更多元素,然后是更新表单。 $form->removeElement('elementName');
更改任何需要更改的标签。 $form->submit->setLabel('Update');
使用数据预填充表单。 $form->populate('dataArray');
然后像往常一样处理表单。
答案 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, ...);
}