Zend Forms - populate()和setDefaults()

Sco*_*ott 8 php forms zend-framework

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

$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)
Run Code Online (Sandbox Code Playgroud)

如果我想在表单上使用"populate($ data)"或"setDefaults($ data)"方法,那么数组是如何组织的呢?这些函数期望什么样的数组?我无法在文档中找到此信息.

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

Mic*_*chi 14

form-> populate()方法采用一个数组,其中键是表单字段的名称.

Zend_Db_Table_Row对象实现了一个toArray()方法,可以在这里使用(和许多其他对象一样).所以你可以这样做:

$form = new MyForm;

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

$form->populate($row->toArray());
Run Code Online (Sandbox Code Playgroud)

  • 给出一个常见用例的+1.我会说在大多数情况下,使用此参数调用populate(). (2认同)

Ste*_*eve 13

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

$data = array( 'first_name' => 'Mickey', 'last_name' => 'Mouse' );
Run Code Online (Sandbox Code Playgroud)


Dev*_*von 8

仅供参考 - 在Zend_Form中,$form->populate($data)只需拨打电话即可$form->setDefaults($data).

  • 现在看一下Zend Framework源代码是非常有教育意义的.有些作品非常复杂,但其中很多都是可以理解的. (2认同)