Bonjour à tous,

Dans un module d'administration créé à l'aide de la commande doctrine:generate-admin, je dispose d'une liste d'objets que je peux filtrer.

Dans mon cas (simplifié), je veux filtrer des Personnes en fonction de leurs Familles. Chaque Personne appartient à une et une seule Famille. Dans le modèle physique de données, cela se traduit par une clé étrangère famille_id dans la table Personne faisant référence à la table Famille.

Par défaut, voici le widget et le validateur de filtre créés par Symfony :

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
abstract class BasePersonneFormFilter extends BaseFormFilterDoctrine {
 
  public function setup()
  {
    $this->setWidgets(array(
      'famille_id' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Famille'), 'add_empty' => true)),
      //[...]
    ));
 
    $this->setValidators(array(
      'family_id' => new sfValidatorDoctrineChoice(array('required' => false, 'model' => $this->getRelatedModelName('Famille'), 'column' => 'id')),
      //[...]
    ));
    //[...]
  }
  //[...]
}
Dans le filtre, cela donne une liste déroulante avec toutes les familles de la table Famille. Or, je voudrais simplement un champ "input text" où l'on puisse rentrer le nom de famille (champ famille_nom de la table Famille) que l'on veut. Et obtenir une liste de 0 résultat si on se plante. Le truc normal.

J'ai essayé bêtement de remplacer par des choses comme new sfWidgetFormFilterInput(array('with_empty' => false)) et new sfValidatorPass(array('required' => false)), mais ça n'a pas fonctionné :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
500 | Internal Server Error | Doctrine_Connection_Mysql_Exception
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
 
at() in SF_ROOT_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php line 1082
at Doctrine_Connection->rethrowException(object('PDOException'), object('Doctrine_Connection_Statement'))
at Doctrine_Connection_Statement->execute(array('text' => 'FAMILLE_1'))
[...]
Sauriez-vous m'aiguiller ?

Merci.