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 :

Filter & sfWidgetFormChoice


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Par défaut Filter & sfWidgetFormChoice
    Bonjour, je suis novice en symfony, je rencontre un problème pour faire marcher un filter.

    Dans mon formulaire j'ajoute un jour de la semaine en base avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setWidget( 'permanence', new sfWidgetFormChoice(array('choices'=>array(''=>'','Lundi'=>'Lundi','Mardi'=>'Mardi','Mercredi'=>'Mercredi','Jeudi'=>'Jeudi','Vendredi'=>'Vendredi','Samedi'=>'Samedi')),array('style'=>'width: 230px;')));
    Jusque là tout vas bien, ensuite je veux faire un filtre dessus.

    J'ai ça comme filtre et validator:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this->setWidget( 'permanence', new sfWidgetFormChoice(array('choices'=>array(''=>'','Lundi'=>'Lundi','Mardi'=>'Mardi','Mercredi'=>'Mercredi','Jeudi'=>'Jeudi','Vendredi'=>'Vendredi','Samedi'=>'Samedi')),array('style'=>'width: 160px;')));
     
     'permanence'                        => new sfValidatorPass(array('required' => false)),
    et il filtre rien, j'ai la liste entière. Si je remplace le sfWidgetFormChoice du filtre par le 'permanence' => new sfWidgetFormFilterInput(), de base et que je tape le jour de la semaine, ça marche.

    Quelqu'un peut m'expliquer comment faire fonctionner ma liste?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Par défaut
    personne?

  3. #3
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Je suis pas un expert symfony mais je te donne une piste:

    Dans la fonction configure de la classe construisant ton formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->setWidget( 'permanence', new sfWidgetFormChoice(array('choices'=>array(''=>'','Lundi'=>'Lundi','Mardi'=>'Mardi','Mercredi'=>'Mercredi','Jeudi'=>'Jeudi','Vendredi'=>'Vendredi','Samedi'=>'Samedi')),array('style'=>'width: 160px;')));
    $this->widgetSchema->setNameFormat('formTest[%s]');
    Ensuite Dans le contrôleur
    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
     
               $this->form  = new classeDeTaForm();
     
                // Je suppose par exemple un POST de la form sur le submit
                if($request->isMethod(sfWebRequest::POST))
                {
                    // Bind du formulaire -> épuration des valeurs du formulaire et du tableau 'formTest' en passant par les validateurs
                    // isValid sert donc au résultat des sfValidator des widgets.
                    $this->form->bind($request->getParameter('formTest'), null);
                    if($this->form->isValid())
                    {
                     // Ici ton traitement
                     $tabRet =  $request->getParameter('formTest');
                     // $tabRet['permanence'] te donnera la valeur de la liste
                     }
                }

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Je n'ai pas compris la moitié de la question initiale mais pourquoi utiliser un sfValidatorPass() pour valider le contenu du widget ? Un sfValidatorChoice() bien initialisé serait plus approprié. Pas impossible que ce soit aussi à l'origine de ton problème vu la façon dont sont examinés les champs du filtre.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Par défaut
    j'ai deja essayé avec ce validator:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $this->setValidator('permanence',new sfValidatorChoice(array('required' => false, 'choices' =>array('','Lundi','Mardi','Mercredi','Jeudi','Vendredi','samedi'))));
    ça ne change rien il ne filtre pas.

    j'ai pas l'impression que le validateur soit le problème.
    On dirait que la liste déroulante n’envoie pas le bon mot à filtrer puisque qu'avec un type text classique le filtre fonctionne ...

  6. #6
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Hmmm... Curieux... Est-ce que la classe qui gère ton filtre a surchargé la méthode qui analyse ta colonne 'permanence' ? (une méthode qui doit s'appeler addPermanenceColumnQuery d'après le nom de ton widget)

Discussions similaires

  1. INSO Filter : "USER-defined exception" avec ctx_do
    Par Wiztiti dans le forum Oracle
    Réponses: 2
    Dernier message: 01/06/2004, 16h14
  2. propriete filtered
    Par crocodingo dans le forum Bases de données
    Réponses: 9
    Dernier message: 15/02/2004, 20h08
  3. CFileDialog Filter
    Par Patrick Beaudoin dans le forum MFC
    Réponses: 4
    Dernier message: 07/09/2002, 09h51

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