IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[Formulaires] Récupérer l'entité pour définir le label


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Par défaut [Formulaires] Récupérer l'entité pour définir le label
    Bonjour,
    Est-il possible de récupérer une entitée dans le formBuilder du FormType pour utiliser ses propriété?

    Exemple pour le label ici, obtenir $monObjet qui est l'entitée "binder" avec le formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder
               ->add('caracteristique', 'percent', array('label' => $monObjet->getName()))
            ;
        }
    Je pense que cela est faisable aussi en passant l'objet en paramertre du constructeur dans le controleur mais j'imagine que cela doit être possible sans aussi car cela est possible pour twig comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form.get('value').caracteristique.name
    Mais cela m'interresse pas car j'aimerais utiliser "l'auto templating" des formulaires pour qu'ils soient tous identiques.

    Une idée?

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ nomDuFormulaire.vars.value.caracteristique }}

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Par défaut
    Oui c'est la meme chose que ce que je disais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{form.get('value').caracteristique.name}}
    Mais je souhaiterais obtenir cette information dans la class de mon formulaire et non pas dans l'affichage twig.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Par défaut
    Je pense pas que tu puisse la passer vers le formulaire, écoute ya plus simple, récupère l'information via ton formulaire $var et passe la variable vers la vue twig et n'oublie pas tu peux définir une label depuis Twig c'est faisable justement elle va prendre la valeur de {{var}}


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ form_label(form.caracteristique , 'valeur de var') }}
    ce pendant dans le formulaire il ne faut pas déclarer la label :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $builder
       ->add('caracteristique', 'percent');

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Par défaut
    Oui mais justement, cela veux dire que je dois réécrire mon template de formulaire et ne peu pas en faire un générique.
    Ce que j'aimerais éviter

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function buildForm(FormBuilderInterface $builder, array $options) {
     
            $label=$builder->getData()->getName();
            //ou bien 
            $label=$options['data']->getName();
     
            $builder
               ->add('caracteristique', 'percent', array('label' => $label))
            ;
        }
    Si ton formulaire est lui-même inclut dans un autre formulaire, il faut regarder du coté des form Events et Form Listener

    Tu pourrais aussi aller modifier la méthode buildView plutôt que BuildForm

Discussions similaires

  1. [2.x] Création-génération d'entités pour formulaire
    Par Rafapouf dans le forum Symfony
    Réponses: 4
    Dernier message: 08/06/2012, 11h49
  2. Récupérer $POST de formulaire créer par JAVASCRIPT pour traitement PHP
    Par rodblochon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/03/2010, 06h14
  3. récupérer un chemin pour le copier dans un label
    Par fred_m dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2009, 15h25
  4. Récupérer une variable pour définir une image
    Par D3bian dans le forum Général Python
    Réponses: 3
    Dernier message: 22/10/2009, 16h33
  5. Réponses: 7
    Dernier message: 03/03/2009, 08h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo