Bonjour,

pour faire simple, j'ai un objet Reunion qui a pour propriétés id, name, town.

Je souhaite afficher dans une liste déroulante toutes les town déjà entrées en base de données pour permettre un filtrage par ville déjà référencée.

Dans la classe de mon filtre, j'ai

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
 
	  $this->widgetSchema['town'] = new sfWidgetFormChoice(array(
																 'choices'  => Doctrine_Core::getTable('Reunion')->getTowns(),
																 'label' => 'Town',
																 ));

Dans la classe ReunionTable, j'ai cette méthode

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
	 public function getTowns()
	{
 
			$q = Doctrine_Query::create()
			->select('r.town')
			->from('Reunion r');
 
		return $q->execute();
	}

Dans mon template, j'inclus un partial qui a ce code:

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
 
 
<form action="<?php ?>" method="get" >
 
<table>
<tfoot>
<tr>
<td>
<input type="submit" value="Save" />
</td>
</tr>
</tfoot>
<tbody>
<?php echo $filter ?>
</tbody>
</table>
</form>
Je me rends compte qu'il affiche par défaut dans ma liste déroulante le name de la réunion et que si je veux afficher la liste des villes, je dois éditer la méthode to_String() et retourner la town.
Le problème: imaginons que j'ai plusieurs champs comme town dans mon objet et que je veuille compléter mon filtre, j'aurais toujours une unique méthode toString dans l'objet meeting.

Comment faire alors? Suis-je obligé de créer un objet pour chaque liste déroulante (un objet town, un objet codepostale ... et utiliser la méthode to_String de chaque objet?

Merci