2009-10-28 12 views
5

I'want para rendir:Zend_Form notación de matriz y los elementos vacíos nombres

<input type="text" value="" name="foo[]" /> 
<input type="text" value="" name="bar[]" /> 

pero Zend_Form_Element requieren un nombre (cadena), por lo que tienen que hacer:

$this->addElement('text', '1', array(
    'belongsTo' => 'foo' 
)); 

$this->addElement('text', '2', array(
    'belongsTo' => 'bar' 
)); 

pero la salida es:

<input id="foo-1" type="text" value="" name="foo[1]" /> 
<input id="bar-2" type="text" value="" name="bar[2]" /> 

también puedo aceptar una salida como:

<input id="foo-1" type="text" value="" name="foo[1]" /> 
<input id="bar-1" type="text" value="" name="bar[1]" /> 

pero Zend_Form_Element reescribir los elementos con el mismo nombre

¿hay una manera de hacer lo que necesito?

+0

quiero lo mismo! Por favor, avíseme si lo resuelve. –

Respuesta

7

Para múltiples valores:

$foo = new Zend_Form_Element_Text('foo'); 
// Other parameters 
$foo->setIsArray(TRUE); 
$this->addElement($foo); 

Genera: name="foo[]"

-

Si usted está buscando las llaves dadas como name="foo[bar]", utilice:

$bar= new Zend_Form_Element_Text('bar'); 
// Other parameters 
$bar->setBelongsTo('foo'); 
$this->addElement($bar); 

- -

Probado en ZF 1.11.5

0

MyFooForm clase extiende Zend_Form { función init pública() { $ fullNameOpts = array ( 'required' => false, 'label' => 'fullName', 'isArray' => true, ' validators '=> array (array (' stringLength ', false, array (1, 250))) ); $ this-> addElement ('text', 'fullName', $ fullNameOpts); // resto de los elementos, formas y cosas va aquí }}

Y eso crea

<dd id="fullName-element"><input type="text" class="inputAccesible" value="" id="fullName"name="fullName[]"></dd> 

Está en Element.php, en la forma, la línea 512 de verificación "isArray". estoy usando un Zend_Form regular, validación cruzada con validadores personalizados y yo estoy empujando subformularios para replicar la forma principal, porque el usuario puede añadir varias veces la misma forma. Además, soy demasiado perezosos para investigar decoradores personalizados, he creado uno, pero mata Subformularios y notación de matriz, por lo que sólo se adhieren a las normales, y que lo resuelve.

estoy en ZF 1.10.

+0

Pero, en general, cuando utilizamos la notación de matriz vacía, tenemos muchos campos con el mismo nombre. Si intentas crear un nuevo elemento con el mismo nombre esperando un nuevo campo fullName [], esto no funciona –

+0

Publica un código y te daré una mano :). Hice una lib para lidiar con esto, y mi próximo objetivo es particularmente eso. Tiene un formulario y desea * replicar * solo 1 elemento del formulario. –

Cuestiones relacionadas