Le widget sfWidgetFormDoctrineChoice accepte comme option 'table_method', où l'on peut définir une méthode qui renvoie une requête, une collection d'objets ou un objet unique. Cela permet de personnaliser les résultats de notre widget.
Toutefois le problème est qu'il est impossible de passer des paramètres à cette méthode, ce qui peut être nécessaire. Une solution est de créer un widget personnalisé, qui lui accepterait des paramètres.
Voici un extrait de code, qui permet de sélectionner qu'une seule colonne lors d'une requête, et d'accéder au résultat dans symfony.
$c = new Criteria();
$c->clearSelectColumns();
$c->addSelectColumn(objectPeer::COUNTRY);
$c->setDistinct();
$res = objectPeer::doSelectStmt($c);
while ($row = $res->fetch()) {
$country = $row[0];
}
?>
Fonctionne avec symfony 1.3/1.4 et Propel 1.4.