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 :

Comment mettre sélectionnée par défaut dans un sfWidgetFormI18nChoiceCountry ? [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 114
    Par défaut Comment mettre sélectionnée par défaut dans un sfWidgetFormI18nChoiceCountry ?
    Bonjour à tous,

    Ma question peut paraître bête, mais impossible de trouver comment faire. J'ai donc un sfWidgetFormI18nChoiceCountry (enfin, la question est la même pour un sfWidgetFormChoice je pense) et j'aurai simplement aimé faire en sorte que l'<option> qui correspond à la culture de l'utilisateur est le paramètre selected.

    Merci

  2. #2
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    Bonjour,

    Dans ta classe de formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setDefault('le_nom_du_widget_ou_de_ton_champ', 'la_valeur_par_défaut');

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 114
    Par défaut
    Citation Envoyé par sacricri Voir le message
    Bonjour,

    Dans ta classe de formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setDefault('le_nom_du_widget_ou_de_ton_champ', 'la_valeur_par_défaut');
    Hélas, ça ne semble pas fonctionner pour un <select>, du moins j'ai bien écrit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setDefault('pays', 'FR');
    Du coup, j'ai aussi essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'pays' => new sfWidgetFormI18nChoiceCountry(
    	array(
    		'culture' => sfContext::getInstance()->getUser()->getCulture(),
    		'default' => 'FR')
    	),
    Et ça ne marche pas non plus (mais en passant, je préfèrerai faire comme cette méthode, à savoir, mettre la condition dans la déclaration du Widget).

    Merci à toi quand même :p

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Attention à ne pas confondre Country "FR" et culture "fr_FR".

    L'erreur vient peut-être de là.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 114
    Par défaut
    Citation Envoyé par mimi68 Voir le message
    Attention à ne pas confondre Country "FR" et culture "fr_FR".

    L'erreur vient peut-être de là.
    Le Widget sfWidgetFormI18nChoiceCountry renvoi des <options> selon une norme ISOtruc, donc, la plupart du temps, en 2 lettres. Et j'avais aussi essayé en minuscule et en majuscule, rien n'y faisait

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Pour ce qui est de la valeur d'un widget à afficher, il n'y a que trois solutions :
    • La valeur dans l'objet du modèle passé à l'initialisation de la form
    • La valeur récupéré du formulaire en retour de l'utilisateur par la méthode bind()
    • Une valeur par défaut dans le config de l'objet form avec la méthode donnée par sacricri

    Il n'y a pas d'option "default".

    Il est peut-être possible, dans le contrôleur, de déclarer l'objet et ensuite d'utiliser le setDefault(), mais je ne suis pas sur que cela fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // pour un widget qui s'appellerait "pays"
    $form = new myForm($ModelObject);
    $form->setDefault('pays','FR');
    Donc dans le config de ton form, tu dois pouvoir récupérer la culture de l'utilisateur (on en a parlé dans un post il y a peu) et le mettre en setDefault().

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 114
    Par défaut
    Citation Envoyé par mimi68 Voir le message
    Pour ce qui est de la valeur d'un widget à afficher, il n'y a que trois solutions :
    • La valeur dans l'objet du modèle passé à l'initialisation de la form
    • La valeur récupéré du formulaire en retour de l'utilisateur par la méthode bind()
    • Une valeur par défaut dans le config de l'objet form avec la méthode donnée par sacricri

    Il n'y a pas d'option "default".

    Il est peut-être possible, dans le contrôleur, de déclarer l'objet et ensuite d'utiliser le setDefault(), mais je ne suis pas sur que cela fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // pour un widget qui s'appellerait "pays"
    $form = new myForm($ModelObject);
    $form->setDefault('pays','FR');
    Donc dans le config de ton form, tu dois pouvoir récupérer la culture de l'utilisateur (on en a parlé dans un post il y a peu) et le mettre en setDefault().
    Ça marche, et c'est plus simple que ce tu as dis :p
    Alors, dans mon contrôleur, j'aavais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->form = new MyForm();
    Et j'ai donc mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $form = new MyForm();
    $form->setDefault('pays', $this->getUser()->getCulture());
    $this->form = $form;
    Merci à vous deux \o/

    EDIT :

    En fait ce code marche lorsqu'il est dans le MyForm.class.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setDefault('pays', 'fr');
    C'est juste que j'avais mis ça à la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setDefault('pays', sfContext::getInstance()->getUser()->getCulture());
    Et la culture est "en" alors que le pays "en" n'existe pas (c'est GB :/).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/01/2012, 21h40
  2. Réponses: 2
    Dernier message: 25/06/2010, 18h36
  3. Réponses: 3
    Dernier message: 10/08/2009, 17h39
  4. avoir une ligne sélectionné par défaut dans un jtable
    Par minanoun dans le forum Composants
    Réponses: 4
    Dernier message: 12/04/2009, 19h15

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