Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai une collection avec la possibilité d'ajouter autant d'occurrence que je veux, sauf que le renderTemplate me sort le code généré par mon formulaire zf2 et il n'est pas comme je le souhaite avec Bootstrap3.
J'ai pour cela besoin de surcharger FormRow lors de la génération du markup (l.216) de ce fichier :
https://github.com/zendframework/zf2/bl … #L216-L223
Par un truc dans ce style :
[lang=php] $elementString = '<div class="col-xs-5">' . $elementString . '</div>'; switch ($this->labelPosition) { case self::LABEL_PREPEND: $markup = sprintf('<div class="form-group"><div class="col-xs-12">%s</div></div>', $labelOpen . $label . $labelClose . $elementString); break; case self::LABEL_APPEND: default: $markup = sprintf('<div class="form-group"><div class="col-xs-12">%s</div></div>', $elementString . $labelOpen . $label . $labelClose); break; }
Afin de pouvoir y mettre le markup que je souhaite, quelle solution est la plus propre et maintenable ?
J'ai vu celle-ci qui me semblerai marcher, mais le problème, et il le dit, c'est que l'on doit recopier le code de la méthode render et si elle évolue faut maintenir cette partie là... http://www.adriannuta.com/2014/03/22/cu … -elements/
Y a t-il une manière de faire que je n'ai pas trouvé ? Et qui pourrai faire ceci simplement ?
Merci.
Dernière modification par JGreco (30-01-2015 18:25:33)
Hors ligne
Bon j'ai trouvé une solution que je juge plus propre.
Mon problème était de pouvoir modifier le markup car lorsque l'on ajoute un élément à la volée pour une collection, le data template est généré avec ce que nous indiquons dans la configuration des champs du fieldset.
J'ai donc créé une "surcharge" du view Helper FormCollection :
[lang=php] public function renderTemplate(CollectionElement $collection) { $dataTemplate = '--tout mon code html--'; $helper = $this->getEscapeHtmlAttrHelper(); return sprintf($this->templateWrapper, $helper($dataTemplate)); }
Ce view helper est appelé fieldCOllection et il faut le déclarer en invokables dans la clé view_helpers de la config.
Et dans la vue on as juste à appeler le render template de fieldcollection.
Hors ligne
Pages: 1