Php Zend Forms-populate()和setDefaults()

Php Zend Forms-populate()和setDefaults(),php,zend-framework,forms,Php,Zend Framework,Forms,假设我有一个表格,收集了一个名字和一个姓氏: $first_name = new Zend_Form_Element_Text('first_name'); $first_name->setLabel("First Name") ->setRequired(true); $last_name = new Zend_Form_Element_Text('last_name'); $last_name->setLabel("Last Name") ->set

假设我有一个表格,收集了一个名字和一个姓氏:

$first_name = new Zend_Form_Element_Text('first_name');
$first_name->setLabel("First Name")
    ->setRequired(true);

$last_name = new Zend_Form_Element_Text('last_name');
$last_name->setLabel("Last Name")
    ->setRequired(true);

$form = new Zend_Form();
$form->addElement($first_name)
    ->addElement($last_name)
如果我想在表单上使用“populate($data)”或“setDefaults($data)”方法,那么数组需要如何组织?这些函数需要什么样的数组?我无法在文档中找到此信息

另外,我知道我可以在创建元素本身时设置值,但这不是我需要的

form->populate()方法接受一个数组,其中键是 表单字段

Zend_Db_Table_Row对象实现了一个toArray()方法,可以使用该方法 这里(和许多其他对象一样)。所以你可以做一些事情,比如:

$form = new MyForm;

$table = new MyTable;
$rowset = $table->find($id);
$row = $rowset->current();

$form->populate($row->toArray());

数组键是字段名,数组值是字段值

$data = array( 'first_name' => 'Mickey', 'last_name' => 'Mouse' );

仅供参考-在Zend_表单中,
$Form->populate($data)
只需调用
$Form->setDefaults($data)
简单,创建一个数组

$data = array('nameInput'=> 'your value');
将表单添加到视图中

$this->view->form = $form;
然后将数据添加到表单中

$form->populate($data);

不时地看一看Zend框架的源代码是很有教育意义的。有些部分相当复杂,但很多部分实际上是可以理解的。+1用于给出一个常见用例。我想说,在大多数情况下,populate()是用这个参数调用的。