Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 :
$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 :
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
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
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
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
Pages: 1