Bonjour,
j'ai un formulaire imbriqué à 3 niveaux avec des allow_add, allow_delete
est possible de personnaliser les formulaire, l'emplacement des ADD, DELETE pour chaque formulaire.
si oui comment? avec un exemple si possible.
merci
Bonjour,
j'ai un formulaire imbriqué à 3 niveaux avec des allow_add, allow_delete
est possible de personnaliser les formulaire, l'emplacement des ADD, DELETE pour chaque formulaire.
si oui comment? avec un exemple si possible.
merci
Oui tu peux utiliser le form theming
http://www.developpez.net/forums/d14...lisation-twig/
Une autre solution ici (que j'utilisais avec SF version 2.0, mais je prefere maintenant le form theming)
http://www.developpez.net/forums/d12...otype-donnees/
je voudrais surcharger un thème pour chaque _collection_widget
donc pour ma collection de produit, voici le retour de mon produitType.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public function getName() { return 'acme_prod_produit'; }
et donc je surcharge :
et rien ne se passe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 {% _acme_prod_produit_collection_widget %} <-- ça marche po {% spaceless %} {% if prototype is defined %} {% set child = prototype %} {% set attr = attr|merge({'data-prototype': block('collection_widget_row'), 'class': attr.class|default('') ~ ' controls' }) %} {% endif %} <div {{ block('widget_container_attributes') }} style="width: auto; "> {{ form_errors(form) }} {% for child in form %} {{ block('collection_widget_row') }} {% endfor %} {{ form_rest(form) }} {% if allow_add %} <div class="col-md-12" style=""><a href="#" class="btn btn-primary sonata-collection-add pull-left"><i class="icon-plus"></i></a></div> {% endif %} </div> {% endspaceless %} {% endblock %}
(quand je surcharge le block pour toutes les collections ça marche ) mais c'est pas ce que je veux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {% block collection_widget %} <-- ça marche mais c'est pas ce que je veux ...
une idée ?
As tu mis dans ta template?
{% form_theme form _self %}
(ou form est la variable twig correspondant à ton formView)
Ta template hérite t'elle bien d'une autre template ?
(les blocks "surchargeur" doivent être défini en dehors des blocks qui s'affichent normalemen t (block 'container' , 'body', etc...)
Es-tu sur du nom de ton block, le + sur est de consulter l'id généré coté html (et de la préfixé par '_')?
oui j'ai mis {% form_theme form _self %}
et il va bien dans ma surcharge de block
pour un simple_widget j'arrive à surcharger mais pas une collection.
j'aimerais savoir si on peut surcharger une collection_widget ou pas ?
quand tu dis le nom du form c'est le name du form , c'est bien ça ?
Un formView a un nom (généralement fourni par la méthode getName du FormType),quand tu dis le nom du form c'est le name du form , c'est bien ça ?
mais un form a également des sous formulaire, qui ont également un nom (généralement l'attribut auquel il est bindé).
Le nom entier d'un formulaire serait donc la concaténation du nom de son (ses) parents et de son propre nom.
Comme dis plus haut : le + sur est de consulter l'attribute "id" généré coté html
voila l'id :
il y a un numéro 7 qui est inclus car collection .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 acme_bundle_documentbundle_dvrptype_unites_7_situations
donc j'ai mis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 {% block _acme_bundle_documentbundle_dvrptype_unites_collection_widget %} ....
et ça ne marche toujours pas
(js suis sous symfony2.1)
acme_bundle_documentbundle_dvrptype_unites_7_situations
est l'id d'un champ du formulaire
il est compris dans un formulaire parent (qui sera représenté par une div avec un id)
ce formulaire parent est lui-même compris dans un fomulaire parent (correspondant à un champ collection, et qui possède également un id)
et ce champ collection est compris dans un formulaire (dont l'id semble être acme_bundle_documentbundle_dvrptype => ce formulaire correspond à la balise html form)
comme évoqué dans les liens que je t'ai donnée tu peux personaliser le champ prototype en utilisant le mot clé "entry"
donc à priori le block
_acme_bundle_documentbundle_dvrptype_unites_widget va étre utilisé pour afficher ta collection de sous formulaire
_acme_bundle_documentbundle_dvrptype_unites_entry_row sera utilisé pour afficher chaque item de ton champ collection
merci bien, pour toutes ces infos.
ça marche mais le comportement n'est pas ce que j'attendais.
disons que j'ai une collection de produits.
donc la ligne est composé d'un produit et de 2 boutons ADD et DELETE
les lignes déjà présentes (que j'ai enregistré précédemment) sont bien formaté avec mon block perso par contre quand je fais ADD le prototype qui s'affiche n'est pas formaté.
wtf ?
on ne trouve pas beaucoup d'info
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager