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 :

Filtre sur backend


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 24
    Par défaut Filtre sur backend
    Bonjour

    J'ai généré un backend pour mon site. Tout marche bien.
    J'ai simplement un soucis au niveau des filtres. En effet symfony trouve de lui même les relations 1:n et affiche une liste déroulante pour la recherche.

    Par exemple, j'ai des utilisateurs et des posts. Quand je veux éditer un post, j'ai mon filtre à droite, qui me permet de choisir les post d'un utilisateur ou d'un autre critère... Les critères apparaissent par défaut sous forme input text, mais pour mes utilisateurs vu qu'il y a une clé étrangere, il affiche la liste des utilisateurs possible sous forme de liste déroulante.
    Ca marche donc bien, c'est ce qu'on voudrait, sauf que... dans mon cas les utilisateurs sont entre 5000 et 10000 en base... Donc la liste déroulante est énorme et la page prend un temps fou à se charger...
    Je souhaiterais donc que le filtre se fasse sur un champs text normal que je remplirais...

    Je suis allé voir dans le generator.yml, et j'ai essayé de bidouiller le champs filter pour modifier ca mais je n'y suis pas parvenu.
    Si quelqu'un à une idée ou un exemple...

    Merci d'avance

  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
    Installe le plugin sfFormExtraPlugin

    Modifie le filtre et utilise le widget sfWidgetFormDoctrineJQueryAutocompleter

    Je pense que la solution ce trouve là.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut
    Bonjour,

    Je souhaiterais faire comme toi manest.

    Le problème c'est que je ne sais pas quel validateur correspond à ce que je veux.

    Voilà ce que j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      public function setup()
      {
        $this->setWidgets(array(
          'tmedaille_nummedaille' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('TMedaille'), 'add_empty' => true)),
          'numordre'  => new sfWidgetFormFilterInput(array('with_empty' => false)),
        ));
     
        $this->setValidators(array(
          'tmedaille_nummedaille' => new sfValidatorDoctrineChoice(array('required' => false, 'model' => $this->getRelatedModelName('TMedaille'), 'column' => 'nummedaille')),
          'numordre'  => new sfValidatorSchemaFilter('text', new sfValidatorInteger(array('required' => false))),
        ));
        $this->widgetSchema->setNameFormat('t_soudure_filters[%s]');
        $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
    }
    Que j'ai modifié ainsi :

    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
     
    public function setup()
      {
        $this->setWidgets(array(
          'tmedaille_nummedaille' => sfWidgetFormFilterInput(array('with_empty' => false)),
          'numordre'  => new sfWidgetFormFilterInput(array('with_empty' => false)),
        ));
     
        $this->setValidators(array(
          'tmedaille_nummedaille' => new sfValidatorSchemaFilter('text', new sfValidatorInteger(array('required' => false))),
          'numordre'              => new sfValidatorSchemaFilter('text', new sfValidatorInteger(array('required' => false))),
        ));
     
        $this->widgetSchema->setNameFormat('t_soudure_filters[%s]');
        $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
      }
    Mais quand je fais ça, j'ai mon erreur :

    SQLSTATE[HY093]: Invalid parameter number: parameter was not defined


    Vous savez ce qui ne va pas ?

  4. #4
    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,

    Citation Envoyé par mimi68 Voir le message
    Modifie le filtre et utilise le widget sfWidgetFormDoctrineJQueryAutocompleter
    Si tu souhaites utiliser la solution de mimi, j'ai posté récemment comment utiliser ce widget : http://www.developpez.net/forums/d92...e/#post5222649

Discussions similaires

  1. [1.x] Backend / filters : ajouter un filtre sur une table liée
    Par Herode dans le forum Symfony
    Réponses: 1
    Dernier message: 26/03/2011, 17h23
  2. Filtre sur un ADODataSet
    Par dleu dans le forum Bases de données
    Réponses: 6
    Dernier message: 21/12/2004, 17h58
  3. Pb Filtre sur ADOTable
    Par liazidf dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/11/2004, 11h34
  4. Filtre sur une base Paradox
    Par mika dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/03/2004, 11h51
  5. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49

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