En fait j'ai trouvé une solution à mon problème néanmoins je ne trouve
pas ça correct :
Mon action de list permet de filtrer les résultats (avec un
sfFormFilter) je récupère correctement un criteria que j'affecte à ma
méthode (Peer) pour récupérer mes résultats :
$this->formFilter = new DataFormFilter();
if($request->hasParameter('data_filters'))
{
$this->formFilter->bind($request->getParameter('my_filters'));
$this->getRoute()->setListCriteria($this->formFilter->getCriteria());
}
$this->data_list = $this->getRoute()->getObjects();
Dans le routing.yml je définie une collection de route :
data:
class: sfPropelRouteCollection
options:
model: Data
Tout est ok sauf que Data est lié à d'autres tables et je me retrouve
avec un nombre conséquent de requêtes (soit beaucoup trop).
--------------------
On peut définir une methode du modèle courant pour l'action list
model_method : { list: getObjects }
Cette méthode reçoit un array (et non un Criteria) de ce fait la
spécification du criteria (vue plus haut) ne fonctionne pas.
Je ne trouve pas ça normal. Est-ce qu'il y a quelque chose que je ne
fais pas correctement?
---------------------
La solution que j'ai trouvé est de simplement surchargé la route pour
data_list :
data_list:
url: /data.:sf_format
class: sfPropelRoute
options: { model: Data, type: list, method_for_criteria:
doSelectJoinAll }
param: { module: data, action: index, sf_format: html }
requirements: { sf_method: get }
data:
class: sfPropelRouteCollection
options:
model: Data
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---