Transmettre des attributs à un champ particulier depuis la vue

Sachant que ce champ est un enfant d'un type

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous !

Suite à ce sujet, je cherche à pouvoir personnaliser les paramètres de l'aperçu de l'image, tout en passant ces paramètres depuis la vue et non depuis la classe du formulaire. L'idée est donc que, quand j'appelle form_widget(form.aMediaCollection), je puisse passer les hauteurs et largeurs, ainsi qu'une classe, à l'image dans mon bloc widget.

J'ai tenté de passer image_options dans le second paramètre (donc {{ form_widget(form.aMediaCollection, {'image_options': {'attr' : {'class': 'img-thumbnail', 'style': 'width: 200px; height: 100px;'}}}) }}), mais il semble que cela n'aille pas plus loin que le bloc-même.

Est-ce qu'il y a moyen de faire ainsi (moyennant adaptation du tableau en second paramètre), ou est-ce que la seule alternative est de rendre chaque champ séparément ?

Merci  :)

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0

Salut,

Tu ne peux pas faire quelque chose à base de formulaire personnalisé en Twig ? Tu personnalises l'affichage de ton bloc aMediaCollection pour toi-même faire passer les paramètres aux éléments de la collection, puis re-personnaliser l'affichage de ceux-ci en prenant en compte les paramètres.

Cela dit, je suis surpris que les paramètres ne soient pas passés de père en fils, est-ce que tu sais si c'est un comportement voulu ?

+0 -0
Auteur du sujet

Tu ne peux pas faire quelque chose à base de formulaire personnalisé en Twig ? Tu personnalises l'affichage de ton bloc aMediaCollection pour toi-même faire passer les paramètres aux éléments de la collection, puis re-personnaliser l'affichage de ceux-ci en prenant en compte les paramètres.

melepe

C'est probablement possible, mais j'aimerais savoir s'il n'y a pas une autre solution. Parce que cela impliquerait rendre les champs un à un explicitement, et je trouve que c'est un peu utiliser une bombe à neutrons pour tuer un acarien.

Cela dit, je suis surpris que les paramètres ne soient pas passés de père en fils, est-ce que tu sais si c'est un comportement voulu ?

melepe

En partie (voir la note juste au-dessus du titre lié), mais c'est pas non-plus expressément précisé comment sont gérés les autres paramètres. Dans la classe, il y a apparemment des fusions diverses, j'avoue que pour l'instant, je n'y ai pas prêté plus que ça attention, c'est pas le plus urgent.

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0

Tu ne peux pas faire quelque chose à base de formulaire personnalisé en Twig ? […]

melepe

[C]ela impliquerait rendre les champs un à un explicitement, et je trouve que c'est un peu utiliser une bombe à neutrons pour tuer un acarien.

Ymox

Pourquoi cela impliquerait de rendre les champs un par un ? ça fait longtemps que je n'ai pas fait de SF2 et le form theming c'était pas trop mon truc, mais d'après ce gist tu es capable de personnaliser ta collection, et donc de passer aux fils les arguments qu'a reçus le père. Comme ça tu restes générique, et tu n'as pas besoin de nommer les éléments de ton formulaire.

+0 -0
Auteur du sujet

Je viens de découvrir qu'avec ce que j'ai en place, quand je rends le formulaire avec

1
2
3
4
5
6
7
8
9
{{ form_widget(edit_form.homeMedias,
    {'image_options': {'attr':
        {
            'class': 'img-thumbnail',
            'width': '200',
            'height': '100'
        }
    } }
) }}

j'ai le conteneur du dernier enfant dans les éléments de la collection qui voir passer mes attributs ({% dump %} dans {% block widget_attributes %}). Deux choses pour l'instant :

  1. ça ne descend pas assez loin
  2. ce n'est pas encore le bon champ  :'(   (d'ailleurs, pourquoi le dernier et pas les autres ?)

Edit

Fausse joie, le test que j'avais n'était pas correct  :-°

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Auteur du sujet

Bon, il n'y a actuellement pas moyen de faire suivre des informations sans redéfinir à la main l'entier du fragment ou aller hacker le noyau. C'est by design. Alors j'ai fini par bidouiller différemment avec des classes basées sur les noms des formulaires imbriqués.

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte