Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-12-2014 16:58:57

bfolliot
Nouveau membre
Date d'inscription: 02-12-2014
Messages: 2

[Résolu] Form collection, enregistrer plusieurs nouveaux éléments

Bonjour.

J'ai mis en place form collection avec l'ajout d'élément dynamique (via un bouton js).
Si j'ajoute 1 élément, il l'enregistre bien, mais si j'en ajoute plusieurs, il enregistre que le dernier.

Savez vous a quoi cela peut être dû?

Merci d'avance.

Mon action :

Code:

$request = $this->getRequest();
$this->menuForm->bind($this->getMenu());

if ($request->isPost()) {

    $this->menuForm->setData($request->getPost());

    if ($this->menuForm->isValid()) {
        var_dump($this->menuForm->getData()->getLinks()->toArray());
        exit;
    }
}

return array(
    'form' => $this->menuForm,
);

Mon form :

Code:

class MenuForm extends Form
{

    public function init()
    {

         $this
             ->setAttribute('method', 'post')
              ->setHydrator(new ClassMethodsHydrator(false))
             ->setName('menu')
         ;

         $this->add(array(
             'type' => 'MenuFieldset',
             'options' => array(
                 'use_as_base_fieldset' => true,
             ),
         ));

        $this->add(array(
             'type' => 'Zend\Form\Element\Csrf',
             'name' => 'csrf',
         ));

        $this->add(array(
            'name' => 'submit',
            'type' => 'Submit',
            'attributes' => array(
                'value' => 'Enregistrer',
            ),
        ));

        $this->add(array(
            'name' => 'addLink',
            'type' => 'Button',
            'options' => array(
                'label' => 'Ajouter un lien',
            ),
            'attributes' => array(
                'class' => 'button-notice addLink',
            ),
        ));
    }
}

MenuFieldset

Code:

class MenuFieldset extends Fieldset
 {
     public function __construct($hydrator, $entity)
     {
         parent::__construct('menu');

         $this
             ->setHydrator(new ClassMethodsHydrator)
             ->setObject($entity)
         ;

     }

     public function init()
     {
         $this->add(array(
             'type' => 'Zend\Form\Element\Collection',
             'name' => 'links',
             'options' => array(
                 'label' => 'Liens',
                 'should_create_template' => true,
                 'allow_add' => true,
                 'allow_remove' => true,
                 'target_element' => array(
                    'type' => 'LinkFieldset',
                    'attributes' => array(
                        'class' => 'menu-link',
                    ),
                 ),
             ),
            'attributes' => array(
                'class' => 'menu-links',
            ),
         ));
     }
 }

LinkFieldset

Code:

class LinkFieldset extends Fieldset implements InputFilterProviderInterface
 {
     public function __construct($hydrator, $entity)
     {
         parent::__construct('link');

         $this
             ->setHydrator(new ClassMethodsHydrator)
             ->setObject($entity)
         ;

         $this->setLabel('Lien');

         $this->add(array(
             'name' => 'id',
             'type' => 'hidden',
             'attributes' => array(
                 'class' => 'link-id',
             ),
         ));

         $this->add(array(
             'name' => 'title',
             'options' => array(
                 'label' => 'Titre',
             ),
             'attributes' => array(
                 'required' => 'required',
                 'class' => 'link-title',
             ),
         ));

         $this->add(array(
             'name' => 'position',
             'value' => 1000,
             'options' => array(
                 'label' => 'Position',
             ),
             'attributes' => array(
                 'required' => 'required',
                 'class' => 'link-position',
             ),
         ));
     }
 }

Dernière modification par bfolliot (02-12-2014 20:14:50)

Hors ligne

 

#2 02-12-2014 20:14:14

bfolliot
Nouveau membre
Date d'inscription: 02-12-2014
Messages: 2

Re: [Résolu] Form collection, enregistrer plusieurs nouveaux éléments

Bon le problème ne venez pas de là mais d'un setter dans mon entité, j'ai cherché pendant 10 heures et il faut que je trouve pas longtemps après avoir posté sur le forum... Désolé du dérangement.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages