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 :

Liste déroulante filtre Débutant


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
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut Liste déroulante filtre Débutant
    Bonjour,

    pour faire simple, j'ai un objet Reunion qui a pour propriétés id, name, town.

    Je souhaite afficher dans une liste déroulante toutes les town déjà entrées en base de données pour permettre un filtrage par ville déjà référencée.

    Dans la classe de mon filtre, j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    	  $this->widgetSchema['town'] = new sfWidgetFormChoice(array(
    																 'choices'  => Doctrine_Core::getTable('Reunion')->getTowns(),
    																 'label' => 'Town',
    																 ));

    Dans la classe ReunionTable, j'ai cette méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    	 public function getTowns()
    	{
     
    			$q = Doctrine_Query::create()
    			->select('r.town')
    			->from('Reunion r');
     
    		return $q->execute();
    	}

    Dans mon template, j'inclus un partial qui a ce code:

    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
     
     
    <form action="<?php ?>" method="get" >
     
    <table>
    <tfoot>
    <tr>
    <td>
    <input type="submit" value="Save" />
    </td>
    </tr>
    </tfoot>
    <tbody>
    <?php echo $filter ?>
    </tbody>
    </table>
    </form>
    Je me rends compte qu'il affiche par défaut dans ma liste déroulante le name de la réunion et que si je veux afficher la liste des villes, je dois éditer la méthode to_String() et retourner la town.
    Le problème: imaginons que j'ai plusieurs champs comme town dans mon objet et que je veuille compléter mon filtre, j'aurais toujours une unique méthode toString dans l'objet meeting.

    Comment faire alors? Suis-je obligé de créer un objet pour chaque liste déroulante (un objet town, un objet codepostale ... et utiliser la méthode to_String de chaque objet?

    Merci

  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 pense que tu as là la bonne solution.

    Mais rien ne t'oblige à tous mettre dans chaque objet... Tu en fais un principale, et juste des enfants de ton principale pour pouvoir avoir plusieurs _toString().

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Je me rends compte que cela donne bien une liste déroulante mais pas un filtre.
    Je suis vraiment surpris qu'il n'y ait pas + de support pour les filtres en front end.

    J'ai tenté de tweeker le filtre l'admin côté backend et de le mettre en front end.
    Mais c'est un peu le bordel car les actions sont à recoder mais on ne sait ps trop quoi changer.

    De plus, je ne sais pas trop comment retirer les boutons edit et delete car je veux juste une liste

    Personne a sérieusement un vrai tutorial là dessus?

    Merci.

  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
    Je crois que je commence a comprendre.

    Tu veux une liste avec des fonctions de filtre. Un peu comme dans l'admin, mais en plus souple.

    J'ai un projet dans ce sens, c'est vraiment à l'état bricolage, mais cela marche, filtre et tris sans avoir a refaire des tonnes de code à chaque module (génération automatique des entête de colonnes avec filtres possible sur certaines colonnes et filtres pour certaines colonne sur la deuxième ligne. Puis les données avec une pagination.

    C'est plus de l'alpha que fonctionnel, mais, c'est un bon début.

    Est-ce cela que tu recherches ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Oui, exactement!
    Je suis vraiment intéressé Michel.

    Merci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Je recommence:

    J'ai une liste de catégories dans mon filtre et une liste de trees qui s'affiche.
    Chaque tree appartient à une ou plusieurs catégories.

    Je veux pouvoir choisir une catégorie dans mon filtre et afficher les trees qui correspondent.

    Voici mon action qui affiche dans un premier temps tous les trees.
    Dans un deuxième temps, après validation du filtre, elle est sensée me sélectionnée les bon trees.
    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
    20
    21
    22
    23
    24
     
     
    public function executeIndex(sfWebRequest $request)
    {
     
    $this->zulu_trees = Doctrine::getTable('ZuluTree')->retrieveFutureTree();
     
    $this->filter = new ZuluTreeFormFilter();		
     
    if($request->isMethod('post')) { 
     
    $this->filter->bind($request->getParameter($this->filter>getName())); 
     
    	if ($this->filter->isValid()) {
     
    		$this->setFilters($this->filter->getValues());
     
    		// ($this->filter->getValues())  retourne l'id de la category
     
    	}
     
     
    } 
    }
    Voici mon partial _filter.php qui est inclus dans le indexSuccess.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
    20
     
    <?php use_stylesheets_for_form($filter) ?>
    <?php use_javascripts_for_form($filter) ?>
     
    <form action="<?php echo url_for('tree/index'); ?>" method="post
    " id="<?php echo $filter->getName() ?>" >
     
    <table>
    <tfoot>
    <tr>
    <td>
    <input type="submit" value="Filtrer" />
    </td>
    </tr>
    </tfoot>
    <tbody>
    <?php echo $filter ?>
    </tbody>
    </table>
    </form>

    indexSuccess.php :

    J'inclus mon filtre et la liste de trees.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    <?php include_partial('filter', array('filter' => $filter)) 
    	?>
     
     
    <table>
      <thead>
        <tr>
          <th>Id</th>
          <th>Name</th>
    	  <th>Categories</th>
          <th>Town</th>
          <th>Postalcode</th>
          <th>Date</th>
        </tr>
      </thead>
      <tbody>
        <?php foreach ($zulu_trees as $zulu_tree): ?>
        <tr>
          <td><a href="<?php echo url_for('tree/show?id='.$zulu_tree->getId()) ?>"><?php echo $zulu_tree->getId() ?></a></td>
          <td><?php echo $zulu_tree->getName() ?></td>
         <td>
            <?php foreach ($zulu_tree->getZuluCategories() as $category)
    		 echo $category. " ";
    		 ?>
          </td>
          <td><?php echo $zulu_tree->getTown() ?></td>
          <td><?php echo $zulu_tree->getPostalcode() ?></td>
    	  <td><?php echo $zulu_tree->getDate() ?></td>
        </tr>
        <?php endforeach; ?>
      </tbody>
    </table>



    Je sais pas comment récupérer la liste des mes trees bien filtrées.
    Comment faire correspondre mon $zulu_trees avec la liste de trees filtrées?

    Merci beaucoup

Discussions similaires

  1. [AC-2003] Listes déroulantes filtrées par formulaire
    Par Piou2fois dans le forum IHM
    Réponses: 12
    Dernier message: 18/07/2012, 15h57
  2. [MySQL] Listes déroulantes dynamiques (débutant)
    Par Guns Of The Patriots dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 09/06/2010, 13h17
  3. Réponses: 0
    Dernier message: 03/03/2008, 12h02
  4. [Struts] - débutante - liste déroulante
    Par alexx dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/04/2005, 15h01
  5. [ JSP ][ Débutant ] Liste déroulante + actualisation de page
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/04/2004, 19h51

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