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 :

Modifier une liste sfWidgetFormDoctrineChoice [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut Modifier une liste sfWidgetFormDoctrineChoice
    Bonjour,

    J'aimerais savoir précisemment comment modifier ce widget.
    Voila l'original :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          $form->widgetSchema['article_id'] = new sfWidgetFormDoctrineChoice(array('model' => $form->getRelatedModelName('ArticleInstalle'), 'add_empty' => true));
    et j'aimerais en faite enlever des donnée du tableau de donnée en fonction d'un paramètre.

    Faut-il que je récupère $form->getRelatedModelName('ArticleInstalle') et que j'enlève les données à la mano ?

    Faut-il que je me crée un tableau précis (1 dimension ? tableau associatif ?) et que je le mette dans des variables spéciale ?

    Edit: j'ai vu qu'il fallait utiliser sfWidgetFormSelect et donc mettre choices. Mais je ne sais pas comment créer le tableau associatif en récupérant les données à partir d'une requête SQL. Peut être qu'avec les hydratations c'est possible ?

  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
    Je ne pense pas qu'il faille modifier le widget, juste le paramétrer correctement.

    En fonction de quoi veux-tu changer les données à afficher ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Par défaut
    Hello !

    Je ne comprends pas bien ou est le problème, à partir du moment ou tu utilises un sfWidgetFormSelect il te suffit d'utiliser une méthode qui va te ramener tes objets articles.

    Dans ton form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->widgetSchema['article_id'] = new sfWidgetFormSelect(array('choices' => ArticleTable::getArticleList($this->getOption('is_valid'))));
    Et dans ton ArticleTable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      public static function getArticleList($valid = true)
      {
        return  Doctrine_Core::getTable('Article')
          ->createQuery()
          ->andWhere('is_valid = ?', $valid)
          ->orderBy('title')
          ->execute();
      }
    C'est un exemple simple peut-être éloigné de ta problématique mais je crois que c'est ce que tu essaies de faire.

    ++

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    Ok je vois un peu mieux le truc. La réponse de Crysfall me convient, c'était un peut ce que j'était en train de faire. Mais je savais pas si je le faisait bien ^^

    [édition]: Peut-on modifié le template du widget ? J'aimerais rajouter un lien pour supprimer un élément juste à côté donc soit je le met soit dans le label (mais c'est un peu moche) soit dans le template soit recréer un widget ? mais je sais pas les faire ^^.

    [édition2]: J'ai remix un widget déjà existant. Je vais essayer de trouver l'auteur de l'original afin qu'il me dise sous quel licence était son code. A priori, c'est une licence GNU donc je vous le fournirait.
    J'ai :
    - 1 widget input + une croix permettant de supprimer l'élément
    - 1 widget checkbox + une croix permettant de supprimer l'élément
    => Utile pour les relations N-M afin de pouvoir supprimer les liens depuis un embedForm.

  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
    Intéressant.

    Mais comment tu gères le bouton pour supprimer dans la liste ?

    Les widgets font appel à la classe sfWidgetFormShemaDecorator qui permet de personnaliser l'affichage.

    Il est peut-être possible de jouer la dessus ?

    Je n'ai pas décortiqué le fonctionnement, ceci ne peut constituer qu'une piste.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Par défaut
    Il y a aussi peut etre la solution (non testée) de rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->embedRelation('table2')
    Qui te permet d'avoir pour chaque choix que tu as fais dans ta liste, des sous formulaires imbriqués que tu pourras supprimer.

    Ca implique quand même d'avoir deux fois l'information, mais grâce à un petit widget que j'avais trouvé et qui fonctionne pas mal, d'avoir la possibilité de rajouter une petite croix (ou peut importe!) qui permet de supprimer un élément imbriqué.

    Je te passe même une photo de la chose pour voir si c'est que tu veux:

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

Discussions similaires

  1. Modifier une liste déroulante (Combobox)
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/06/2007, 12h22
  2. [GTK+] Modifier une liste via une fonction callback
    Par odsen.s dans le forum GTK+ avec C & C++
    Réponses: 12
    Dernier message: 03/05/2007, 17h33
  3. [debutant]modifier une liste deroulante
    Par dimmak dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/02/2007, 15h19
  4. [debutant]Modifier une liste passer en parametres
    Par chpog dans le forum Langage
    Réponses: 3
    Dernier message: 03/01/2006, 11h57
  5. modifier une liste deroulante
    Par navona dans le forum IHM
    Réponses: 2
    Dernier message: 30/11/2005, 00h01

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