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 :

sfWidgetFormDoctrineChoice: choisir la colonne de sélection [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut sfWidgetFormDoctrineChoice: choisir la colonne de sélection
    Bonjour,

    J'ai un problème auquel je n'arrive pas à apporter une solution, j'espère que vous pourrez m'aider.

    Contexte:
    Une table Resources avec (notamment) un champ submit_user.

    Une table Users avec (notamment) un champ id et un champ username.
    Le champ id est clé primaire de la table.

    Une clé étrangère de Resources(submit_user) vers Users(username).

    Un formulaire pour Resources dont le widget et le validateur pour le champ submit_user sont les suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'submit_user' => new sfWidgetFormDoctrineChoice(array('model' => 'Users', 'add_empty' => false)) //On aurait tout aussi bien pu avoir 'model' =>getRelatedModelName('Users')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'submit_user' => new sfValidatorDoctrineChoice(array('model' => 'Users', 'required' => false, 'column' => 'username')) //Même remarque que ci-dessus
    Les plus attentifs d'entre vous remarqueront que si l'ont tente d'insérer une valeur de submit_user telle que donnée par cela, on va violer la contrainte de clé étrangère définie plus haut. En effet, c'est le champ id qui sera pris pour valeur de submit_user alors qu'on s'attendrait à avoir le champ username pour respecter la contrainte.

    Après quelques tentatives ratées, je me tourne vers vous et votre maîtrise du framework de formulaire pour m'aiguiller vers une solution, c'est-à-dire un moyen de transmettre le champ username et non le champ id du Users pour les choix du Widget correspondant à submit_user de Resources. (J'insiste sur le fait qu'il ne s'agit pas ici d'un problème d'affichage dans le formulaire donc, pas d'option method, column ou encore un __toString() dans Users, c'est déjà fait )

    Merci d'avance et n'hésitez pas à me questionner si je ne suis pas assez clair ou trop ambigu.

    Kantho

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    J'ai notamment consulté l'API et d'autres forums anglo-saxons sans y trouver une réponse...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    J'ai continué à chercher de mon côté et j'ai abouti à une solution pas très propre mais dont j'étais à peu près certain qu'elle pouvait fonctionner...La voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $submitUsername = Users::getAllUsers();
    $this->widgetSchema['submit_user'] = new sfWidgetFormChoice(array('choices' => $submitUsername, 'expanded' => false, 'multiple' => false));
     
    $this->validatorSchema['submit_user'] = new sfValidatorChoice(array('choices' => array_keys($submitUsername)));
    Et voilà le code de getAllUsers dans Users.class.php:

    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
     
     
    public static function getAllUsers(){
     
            $query = Doctrine_Query::create()
                    ->select('u.username')
                    ->from('Users u')
                    ;
     
            $res = $query->fetchArray();
     
            $i=0;
            foreach ($res as $line){
                $username[$i] = $line['username'];
                ++$i;
            }
     
            return $username;
        }
    Mais maintenant, c'est l'index du tableau d'usernames qui est envoyé dans la requête d'insertion dans la base de données, toujours pas l'username en lui-même, quelqu'un pour m'éclairer?

    Merci d'avance.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    Mon problème a été résolu, voici un lien pour les personnes que cela intéresserait (en anglais): http://stackoverflow.com/questions/9...specific-field

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

Discussions similaires

  1. [WD14] Colonne avec sélection
    Par Raptor92 dans le forum WinDev
    Réponses: 10
    Dernier message: 27/07/2009, 17h44
  2. Comment faire pour choisir une colonne d'un dataGrid?
    Par loic20h28 dans le forum Windows Forms
    Réponses: 50
    Dernier message: 06/08/2008, 20h32
  3. Comment choisir les colonnes d'un fichier à charger?
    Par Monfy29 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 04/08/2008, 11h58
  4. Choisir une colonne suivant le nom mis dans une ligne
    Par Masmeta dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/02/2008, 15h27
  5. [SQL] Requête SELECT avec un paramètre pour choisir une colonne
    Par svergeylen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/12/2007, 17h36

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