2009-08-19 13 views
8

Digamos que tengo un formulario que recoge un nombre y un apellido:Formas Zend - poblar() y 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) 

Si quiero utilizar el "pueblan ($ datos)" o el método "setDefaults ($ data)" en el formulario, ¿cómo debe organizarse la matriz? ¿Qué tipo de matriz esperan estas funciones? No he podido encontrar esta información en los documentos.

Además, sé que puedo establecer el valor al crear el elemento en sí, pero esto no es lo que necesito.

Respuesta

14

Las claves de matriz son los nombres de los campos, los valores de matriz son los valores de los campos.

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

El método form-> populate() toma una matriz donde las claves son los nombres de los campos del formulario.

El objeto Zend_Db_Table_Row implementa un método toArray() que se puede usar aquí (al igual que muchos otros objetos). Entonces usted puede hacer cosas como:

$form = new MyForm; 

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

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

+1 para dar un caso de uso común . Yo diría que en la mayoría de los casos se llama a populate() con este argumento. –

8

FYI - en Zend_Form, $form->populate($data) sólo hace una llamada a $form->setDefaults($data).

+2

Puede ser bastante educativo echar un vistazo al código fuente de Zend Framework de vez en cuando. Algunas piezas son bastante complejas, pero muchas son realmente comprensibles. –

0

sencilla, crear una matriz

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

Añadir su formulario a la vista

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

continuación, se añaden datos a la forma

$form->populate($data);