2009-10-28 3 views
5

I'want pour rendre:notation tableau Zend_Form et éléments vides noms

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

mais Zend_Form_Element nécessitent un nom (chaîne), donc je dois faire:

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

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

mais la sortie est:

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

Je peux aussi accepter une sortie comme:

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

mais Zend_Form_Element réécrire des éléments avec le même nom

est-il un moyen de faire ce que je dois?

+0

Je veux la même chose! S'il vous plaît laissez-moi savoir si vous le résoudre. –

Répondre

7

Pour plusieurs valeurs:

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

Génère: name="foo[]"

-

Si vous êtes à la recherche pour les clés données telles que name="foo[bar]", utilisez:

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

- -

Testé sur ZF 1.11.5

0

classe MyFooForm étend Zend_Form { public function init() { $ fullNameOpts = array ( 'required' => false, 'label' => 'fullName', 'isArray' => true, ' validators '=> array (array (' stringLength ', false, array (1, 250))) ); $ this-> addElement ('text', 'fullName', $ fullNameOpts); // reste des éléments, des formes et des choses va ici }}

Et cela ne crée

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

Il est sur element.php, dans la forme, la ligne 512 cocher "isArray". J'utilise un zend_form standard, crossValidation avec des validateurs personnalisés et je pousse des sous-formulaires pour répliquer le formulaire principal, car l'utilisateur peut ajouter plusieurs fois le même formulaire. En outre, je suis trop paresseux pour rechercher des décorateurs personnalisés, j'en ai créé un, mais il tue les sous-formulaires et la notation de tableau, donc je m'en tiens à ceux réguliers, et cela résout.

Je suis à Zf 1,10.

+0

Mais généralement, lorsque nous utilisons la notation tableau vide, nous avons beaucoup de champs avec le même nom. Si vous essayez de créer un nouvel élément avec le même nom en attendant un nouveau champ fullName [] cela ne fonctionne pas –

+0

Publiez du code et je vous donnerai un coup de main :). J'ai fait un lib pour faire face à ceci, et mon prochain but est particulièrement cela. Vous avez un formulaire, et vous voulez * répliquer * seulement 1 élément du formulaire. –

Questions connexes