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 :

Autocomplete sur FormFilter [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2009
    Messages : 64
    Par défaut Autocomplete sur FormFilter
    Bonjour a tous,

    Je suis actuellement entrain de coder une petite appli pour apprendre symfony, dans laquelle j'ai des utilisateurs qui ont des objets divers et variés.

    J'utilise donc un formFilter pour filtrer mes objets sur de nombreux critères, mais lorsque je cherche a filtrer ces objets par utilisateur, je me retrouve avec un formFilter composé d'un select a rallonge !

    Je me suis donc dit qu'il serait facile , de remplacer ce select par une auto-completion... Malheureusement, apres quelques longues heures de recherches , j'ai bien l'impression que dans un FormFilter, on est beaucoup plus limité que dans un Form tout court !

    Ma question est donc : Quelqu'un a t'il deja tenté "d'ajaxiser" un formFilter ?

  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
    En fait, la couche ajax ne devrait pas être implantée au niveau de la vue et encore moins du contrôleur.

    L'idée est que l'application doit pouvoir tourner sans javascript activé et que cela n'apparaît que comme un "plus" qui vient après.

    A partir de là, ton javascript ne doit pas poser de problème qu'il soit basé sur un form ou un filter.

    Reste que tu dois pouvoir utiliser les objets liste dans un filter, mais tu as un plugin à charger.

  3. #3
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    Bonjour,

    Ce n'est absolument pas un problème et c'est là toute la puissance de symfony.

    Un filter est un formulaire à l'origine donc ...

    Je te donne un exemple utilisant le sfWidgetFormDoctrineJQueryAutocompleter du plugin sfFormExtraPlugin, à toi de l'adapter :
    • dans ModelFormFilter.class.php
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      $this->widgetSchema['etudes_id']->setOption('renderer_class', 'sfWidgetFormDoctrineJQueryAutocompleter');
      $this->widgetSchema['etudes_id']->setOption('renderer_options', array(
            "model" => "Etudes",
            "url"   => url_for("@ajax_etudes"),
      ));
      On lui dit de travailler sur le modèle Etudes car l'autocompletion recherche un etudes_id.
    • dans routing.yml :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      ajax_etudes:
        url:  /ajax-etudes
        param:  { module: tools, action: ajaxEtudes }
    • dans actions.class.php du module tools indiqué au-dessus :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
        public function executeAjaxEtudes(sfWebRequest $request)
        {
          $this->getResponse()->setContentType('application/json');
          $datas = Doctrine::getTable('Etudes')->getEtudesAutocompletion($request->getParameter('q'), $request->getParameter('limit'))->getData();
          $etudes = array();
          foreach($datas as $etude)
          {
             $etudes[$etude->id] = (string) $etude;
          }
          if($etudes!=array()) return $this->renderText(json_encode($etudes));
        }
    • dans model/doctrine/EtudesTable.class.php :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      public function getEtudesAutocompletion($q, $limit){
          return Doctrine::getTable("Etudes")->createQuery()
                      ->where("nom LIKE ?","%".$q."%")
                      ->limit($limit)
                      ->execute();
        }


    C'est un assez vieil exemple mais il te suffit de l'adapter au goût du jour je pense

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

Discussions similaires

  1. PDT autocompletion sur methode
    Par grunk dans le forum Eclipse PHP
    Réponses: 1
    Dernier message: 11/09/2008, 14h10
  2. [AJAX] autocompletion sur menu deroulant
    Par bourvil dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/02/2007, 15h44
  3. Autocompletion sur plusieur champs texte
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/07/2006, 15h20
  4. Réponses: 3
    Dernier message: 01/07/2006, 14h04
  5. Réponses: 22
    Dernier message: 31/05/2006, 20h11

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