2013-04-27 4 views
1

Je voudrais créer un formulaire zend simple avec quelques champs, mais je veux recueillir ces champs dans un tableau. Je voudrais voir mes noms de formulaire comme ceci:Formulaire ZF2 en tant que tableau

name="login[username]" name="login[password]" name="login[submit]" 

je ne pouvais trouver aucune description. Si quelqu'un connaît la solution, faites-le moi savoir!

+0

réponse de Rémi est le bon. C'est une bonne pratique de faire tout ce qui touche à une entité un fieldset, et d'attacher seulement des éléments comme Submit et CSRF au formulaire de niveau supérieur. Cela demande un peu d'expérimentation, mais le manuel le couvre plutôt bien. C'est de loin la meilleure façon de faire fonctionner ensemble forms/filters/validators/binding pour des formes non triviales. – timdev

Répondre

3

Vous pouvez essayer avec fieldsets comme ça

namespace Application\Form; 

use Application\Entity\Brand; 
use Zend\Form\Fieldset; 
use Zend\InputFilter\InputFilterProviderInterface; 

class YourFieldset extends Fieldset implements InputFilterProviderInterface 
{ 
    public function __construct() 
    { 
     parent::__construct('login'); 

     $this->add(array(
      'name' => 'username', 
      'options' => array(
       'label' => 'Username' 
      ), 
      'attributes' => array(
       'required' => 'required' 
      ) 
     )); 

     $this->add(array(
      'name' => 'password', 
      'type' => 'Zend\Form\Element\Password', 
      'options' => array(
       'label' => 'Password' 
      ), 
      'attributes' => array(
       'required' => 'required' 
      ) 
     )); 

    $this->add(array(
      'name' => 'submit', 
      'type' => 'Zend\Form\Element\Submit', 
      'options' => array(
       'label' => 'Submit' 
      ), 
      'attributes' => array(
       'required' => 'required' 
      ) 
     )); 
    } 

    /** 
    * @return array 
    */ 
    public function getInputFilterSpecification() 
    { 
     return array(
      'name' => array(
       'required' => true, 
      ) 
     ); 
    } 
} 
+0

J'aime vraiment cette solution, merci! –