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 :

Initialiser une sfWidgetFormDate


Sujet :

Symfony PHP

  1. #1
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut Initialiser une sfWidgetFormDate
    Je voudrais initialiser les listes déroulantes du champ 'date' d'un formulaire.
    Ca a l'air tout bête, pourtant impossible de trouver quelque exemple que ce soit dans la doc de l'API.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$this->widgetSchema['date_actualite'] = new sfWidgetFormDate(array(
    	    'format' => '%day%/%month%/%year%'
    	));
    	$this->widgetSchema['date_actualite']->setDefault(time());
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$this->widgetSchema['date_actualite'] = new sfWidgetFormDate(array(
    	    'format' => '%day%/%month%/%year%'
    	));
    	$this->widgetSchema['date_actualite']->setDefault(date('Y/m/d'));
    en vain.

  2. #2
    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
    De tête et à vérifier.

    C'est fonction de la culture de l'utilisateur.

  3. #3
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Après moult tâtonnements, je suis tout de même arrivé à résoudre au moins ce problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$this->widgetSchema['date_actualite']
    		->setOption('format', '%day%/%month%/%year%')
    		->setDefault("now");

  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
    Un peu long mais j'ai pris le temps de tester avant de poster

    L'idée consiste a préciser la culture de l'utilisateur, soit lors d'un login, soit d'une autre manière. Ici je la renseigne pour le test dans l'action.

    Je crée une structure vierge pour un module date, le contrôleur donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class dateActions extends sfActions
    {
        public function executeShow(sfWebRequest $request)
        {
            $this->getUser()->setCulture("fr_FR");
            $this->form = new DateForm();
        }
    }
    Note que je positionne la culture dans le contrôleur pour l'exemple.

    le form donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class DateForm extends BaseForm
    {
        public function configure()
        {
            $culture = sfContext::getInstance()->getUser()->getCulture();
            $this->setWidgets(array(
                'Date1' => new sfWidgetFormI18nDate(array(
                    'culture' => $culture
                ))
            ));
    //        $this->setWidgetSchema()->setDefault('Date1');
        }
    }
    Un peu tordu pour récupérer la culture, on pourrait parfaitement le mettre dans la déclaration de l'objet mais cela rendrait le code moins lisible. Il est dommage que que le WidgetFormI18nDate ne soit pas capable de récupérer la culture par défaut du user si on ne précise pas de culture dans la déclaration.

    Je te laisse mettre en place un template pour notre essai.

    Tu as maintenant ce qu'il te faut pour saisir ta date dans un joli format français. J'ai essayé avec en culture : "en_US" et, pour rire, et cela marche, "ja_JP", la liste des mois vaut la peine d'être visualisée...

    J'espère que cela répond un peu mieux à ta question et va te permettre d'avancer dans ton projet.

Discussions similaires

  1. Comment initialiser une liste de composants avec une boucle ?
    Par EricSid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/04/2005, 18h46
  2. Comment initialiser une ChildFrame ???
    Par loupdeau dans le forum MFC
    Réponses: 14
    Dernier message: 22/03/2005, 13h28
  3. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  4. Réponses: 9
    Dernier message: 29/06/2004, 08h40
  5. Réponses: 3
    Dernier message: 17/12/2003, 11h26

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