Bonjour,

voila, j'ai du mal à comprendre ce que me génère Symfony lorsque je
fais un "partial filter" pour un filtre qu'il ne sait pas gérer .
Voici une description rapide de ma table :

  membre:
    id:
    nom:
    prenom:
    specialite1:            #clef étrangère sur l'id de la table
specialite
    specialite2:            #clef étrangère sur l'id de la table
specialite
    specialite3:            #clef étrangère sur l'id de la table
specialite
  specialite:
    id:
  specialite_i18n:
    libelle:

Je cherche à mettre en place un filtre qui me permette de n'afficher
que les membres ayant telle ou telle spécialité. J'ai donc rajouté un
"partial filter" dans le generator.yml du module "membre" comme ceci :

filters:         [_specialite_filter]

et je l'ai défini ainsi dans templates/_specialite_filter.php (http://
hashbin.com/469.html):

<?php echo object_select_tag(isset($filters['specialite_filter']) ?
$filters['specialite_filter'] : null, null,
array (
  'include_blank' => true,
  'related_class' => 'Specialite',
  'text_method' => '__toString',
  'control_name' => 'filters[specialite_filter]',
)) ?>

Pour l'instant je n'ai pas trouvé d'autre moyen que d'écraser
totalement la méthode addFiltersCriteria() de la classe "action". Ca
ne me gènerait pas plus que ça si je n'avait pas d'autres filtres de
définis et que je ne risquait pas d'en rajouter par la suite mais ce
n'est pas le cas. Actuellement la méthode fait une 30aine de lignes de
code et ça me paraît étonnant qu'il n'y ait pas moyen d'éviter d'avoir
à la redéfinir entièrement à chaque ajout/changement de filtre. La
méthode addFiltersCriteria() générée est définie ainsi (http://
hashbin.com/46a.html):

  protected function addFiltersCriteria($c)
  {
    if (isset($this->filters['specialite_filter_is_empty']))
    {
      $criterion = $c->getNewCriterion(MembrePeer::SPECIALITE_FILTER,
'');
      $criterion->addOr($c-
>getNewCriterion(MembrePeer::SPECIALITE_FILTER, null,
Criteria::ISNULL));
      $c->add($criterion);
    }
    else if (isset($this->filters['specialite_filter']) && $this-
>filters['specialite_filter'] !== '')
    {
      $c->add(MembrePeer::SPECIALITE_FILTER, $this-
>filters['specialite_filter']);
    }
  }

et me retournait donc logiquement l'erreur suivante :

Fatal error: Undefined class constant 'SPECIALITE_FILTER' in /home/
symftest/cache/backend/dev/modules/autoMembre/actions/
actions.class.php on line 252

Pourquoi donc Symfony est allé chercher un champ
"MembrePeer::SPECIALITE_FILTER" alors qu'il n'existait pas ?
Et surtout, existe-t-il une autre méthode pour effectuer mon filtre
sur specialite1 OU specialite2 OU specialite3 ?

Merci


--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr" 
de Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [EMAIL PROTECTED]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à