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 :

Changer option formulaire


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Par défaut Changer option formulaire
    Bonjour

    je voulais juste s'avoir comment changer une option d'un champ sur SF2 d'un formulaire hériter. j'ai bien trouver une solution mais je la trouve "pas super"
    J'aurais aimer faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $optionsUsername = $builder->get('username')->setOption('label','Utilisateur');
    Mais me voila avec cette immonde code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $optionsUsername = $builder->get('username')->getOptions();
    $typeUsername = $builder->get('username')->getName();
    $optionsUsername['label'] = 'Utilisateur';
    $builder->add('username', $typeUsername, $optionsUsername);
    (pourquoi faire simple quand ont peux faire compliquer ?)

    Soit je loupe un truc avec SF2 soit SF2 a oublier d’implémenter une pitit méthode de 3 ligne :-) Donc si ma solution est la bonne j'aimerais comprendre pourquoi Mr Potencier à décider de coder des truc pareil

    Merci pour votre aide

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Hello,

    M. Potencier n'a pas oublié de faire trois lignes, par contre, toi, tu as certainement zappé un paquet de lignes de la documentation.
    La méthode add de ton builder prend trois paramètres : le nom de ton champs, son type, et un tableau d'options.

    La construction de ton FormType devrait d'avantage ressembler à quelque chose dans ce gout là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $builder->add('username', 'text', array(
        'label' => 'Utilisateur',
    ));
    Je t'invite à regarder un peu quelques options qu'il est possible de passer => http://symfony.com/fr/doc/current/re...ypes/form.html

    Sinon tu peux toujours lui faire une PR, ça le fera bien rire

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Par défaut
    Je ne parle pas d'ajouter un champ ... ta reponse confirme ma crainte (ajout au lieu de modif ou tou ajoute rpour ecraser lancien)
    Je veux ajouter une option a un champ déja existent et definie dans la class Type parent de la façon la plus DRY possible donc surement pas en réutilisent Add qui demande de nouveau le type et les option déjà passer.

  4. #4
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Je n'avais pas fais attention à la notion d'héritage.

    Je ne vois pas d'autre solution que celle que tu donnes qui revient globalement au même que la mienne, à ceci près que pour de ne pas te répéter tu perds en clarté en séparant la config surchargée et la config de base dans deux fichiers séparés.

    Si tu jètes un œil aux classes FormBuilder et FormConfigBuilder, tu verras qu'il n'y a aucune méthode qui "édite" les options.

    Et c'est normal : la notion de FormBuilder fait que lorsque tu crées ton formulaire, tu peux surcharger un champs tout entier (le champs username), mais pas surcharger le tableau de configuration qui permet de le construire. Parce qu'en faisant ça, tu ne répercutes pas les changements sur le reste du form, tu as juste changé la config, mais tu n'as pas reconstruit ton élément à partir de la nouvelle config.

    C'est comme si tu changeais les fichiers config et parameters sans réinitialiser le cache. La config a changé mais pas les éléments que tu utilises.

  5. #5
    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
    Bonjour,

    S'il s'agit de changer le label du formulaire de FOSUSerBundle, Il sera bien plus simple de travailler au niveau des fichiers de traduction.
    http://symfony.com/doc/current/cookb...l#translations

    ou bien de travailler au niveau du rendu twig

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Par défaut
    Je n'aime pas me servir d'un fichier de traduction quand le site n'en a pas besoin . si je personnalise le label dans le twig je ne pourrais plus utiliser {{ form_widget(form) }} et je galérerais avec l'ordre des champs a moins de tous les écrires. Mais la methode twig semble la plus propre sur tous que le label à sa place dans la vue.

    Dommage pour le setOption.

Discussions similaires

  1. changer Option Selected d'une Liste
    Par Link45 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/05/2007, 12h04
  2. [MySQL] Problème <OPTION Formulaire
    Par jolonghorn dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/02/2007, 14h28
  3. Réponses: 6
    Dernier message: 06/09/2006, 13h08
  4. [CSS] Gras sur le texte d'OPTION (formulaire)
    Par hash95 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 06/09/2006, 13h07
  5. changer url - formulaire
    Par phoeniix07 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 15h30

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