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 :

generator.yml avec liste déroulante de constante


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 109
    Par défaut generator.yml avec liste déroulante de constante
    J'ai un champs qui ne peux posséder qu'un tableau de constante comme valeur.

    Dans l'application backend, lors de l'édition/création, comment afficher ce champs avec la liste déroulante de ses valeurs possibles ?

    Aujourd'hui j'utilise le fichier generator.yml
    edit:
    title: Edition "%%name%%" (#%%id%%)
    display: [...,etat,....]
    Puis-je le faire avec ce fichier ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Bonjour,

    je te conseillerais de spécifier cette contrainte directement avec Doctrine (méthode plus propre et donc plus maintenable) :
    1. dans ta table myObject, créer une relation à une table myConstant ; cette dernière contient la déclaration de toutes tes constantes.
    2. dans tes fixtures, renseigner toutes les constantes dont tu auras besoin.

    Cela ressemblerait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # schema.yml
    myObject:
      actAs: ~
      columns:
        name: { type: string }
        value_id: { type: integer }
      relations:
        Value:
          class: Constant
          local: value_id
          foreign: id
          foreignAlias: myObjects
     
    Constant:
      actAs: ~
      columns:
        short_label: { type: string }
        long_label: { type: clob }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # fixtures.yml
    Constant:
      etatConstant:
        short_label: etat
        long_label: etat de mon objet
      xxxConstant:
        short_label: xxx
        long_label: xxx de mon objet
    [...]
    Avec cette méthode, tu gères ton formulaire comme à l'habituel (comme un champ de valeurs classique). Si besoin, tu pourrais aussi du coup créer un module de gestion de tes constantes, et en supprimer ou en ajouter plus tard en production.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 109
    Par défaut
    C'est une bonne solution, mais cela m'oblige à gérer mes constantes en table... ce que préfèrerais éviter.
    Il n'y a pas un moyen directement dans le générator ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    A priori, je dirais que non : le generator.yml n'est pas fait pour ça.

    Par contre, rien ne t'empêche dans le formulaire que tu affiches de lui ajouter un widget spécifique pour tes constantes, du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $this->setWidget('constantes', new sfWidgetChoice(array(
      'value_1' => 'toto',
      'value_2' => 'tata',
      'value_n' => 'foo',
    )));
    (syntaxique à vérifier !!)

    cela m'oblige à gérer mes constantes en table... ce que préfèrerais éviter
    Tu risques de te faire taper dessus par Michel Rotta ! Cf. un problème similaire précédent : Doctrine et les ENUM

  5. #5
    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
    Et je tape....

    Quoique, pour certaines constantes très constantes et liées au comportement du modèle objet, je puisse parfaitement envisagé qu'elles ne soient pas dans une table, je ne suis pas sur que les bénéfices soit important, mais je peux comprendre.

    La solution est de créer dans ton modèle objet (/lib/model/doctrine/...) qui correspond à la table la première méthode au moins les deux au mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    /lib/model/doctrine/maTable.class.php
     
    ...
    public static function getEtats()
    {
       return array(
                 1 => 'etat1',
                 2 => 'etat2',
                 ...
                 );
    }
     
    public static function getEtatName( $etat_id = null )
    {
       $etats = $this->getEtats();
       $idEtat = ( is_null( $etat_id ) ) ? $this->getEtat() : $etat_id;
       return $etats[$idEtat];
    }
    Code non vérifié.

    Dans ton widget, il suffit alors de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->setWidget('constantes', new sfWidgetChoice(maTable::getEtats) );
    Bonne chance

Discussions similaires

  1. pb avec liste déroulante à 2 colonnes visibles
    Par moicats dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 10h38
  2. [MySQL] probleme avec liste déroulante et requete
    Par Ludo75 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2006, 13h55
  3. Problème avec liste déroulante
    Par Invité dans le forum IHM
    Réponses: 2
    Dernier message: 14/12/2005, 21h04
  4. Pb Formulaire avec liste déroulante
    Par Rouanou dans le forum IHM
    Réponses: 12
    Dernier message: 23/11/2005, 16h51
  5. Aide à la saisie avec liste déroulante
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 09h04

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