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,
)
);
}
}
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