2009-08-19 51 views
8

比方说,我有一个收集了名字和姓氏的一种形式:Zend的形式 - 填充()和setDefaults()

$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) 

如果我想使用“填充($数据)”或表单上的“setDefaults($ data)”方法,数组是如何组织的?这些功能需要什么样的阵列?我无法在文档中找到这些信息。

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

回答

14

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

$data = array('first_name' => 'Mickey', 'last_name' => 'Mouse'); 
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()); 
+2

+1给了一个共同的用例。我会说在大多数情况下,使用这个参数调用populate()。 – 2010-11-16 10:09:37

8

仅供参考 - 在Zend_Form中,01​​只是让到$form->setDefaults($data)通话。

+2

现在看一看Zend Framework源代码是非常有教育意义的。有些作品非常复杂,但其中很多都是可以理解的。 – 2010-11-16 10:08:21

0

简单,建立一个数组

$data = array('nameInput'=> 'your value'); 

你的窗体添加到您的视图

$this->view->form = $form; 

然后将数据添加到窗体

$form->populate($data);