Bonjour,
Grand débutant en symfony je cherche à utiliser les form filter généré par le framework.
J'ai un objet personne qui est en relation avec un objet candidature j'arrive a utiliser le personneformfilter dans mon appplication frontend par contre lorsque je veux embarquer dans cette form la formfilter de mon objet candidature c'est la que ca se complique
donc dans mon objet personneFormFilter j'ai rajouté :
Du coup j'ai bien tout ce qu'il faut à l'affichage mais je ne sais pas comment traiter les filtres dans mon action :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 //PersonneFormFilter.class.php //On embarque la forme pour les candidature et planning : $this->embedForm('candidature', new CandidatureFormFilter());
j'ai essayé ca :
Mais avec ce code je n'ai pas d'erreur mais aucun filtre ne s'applique il exécute toujours ma requête de base (a savoir select * from personne order by nom). Je ne sais pas trop par quel bout prendre le problème j'imagine que je dois lui dire quelque part comment gérer la relation entre mon objet personne et mon objet candidature lors de la construction de la requête pour le filtrage ... ?
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 //Fichier action.class.php class personneActions extends sfActions { public function executeFilter(sfWebRequest $request) { // RESET if ($request->hasParameter('_reset')) { exit('reset'); $this->setFilters(array()); //reset, filtre vide $this->forward('personne','index'); } $this->filters = new PersonneFormFilter($this->getFilters()); $this->filters->bind($request->getParameter($this->filters->getName())); if ($this->filters->isValid()) { $this->setFilters($this->filters->getValues()); $this->forward('personne','index'); } $this->setTemplate('index'); } protected function getFilters() { return $this->getUser()->getAttribute('personne.filters', array()); } protected function setFilters(array $filters) { return $this->getUser()->setAttribute('personne.filters', $filters); } protected function buildQuery($q) { if(!isset($this->filters)) $this->filters = $this->getFilters(); $this->filters->setQuery($q); $query = $this->filters->buildQuery($this->getFilters()); return $query; } public function executeIndex(sfWebRequest $request) { $this->filters = new PersonneFormFilter($this->getFilters()); $baseQuery = Doctrine::getTable('personne') ->createQuery('r') ->orderBy('nom'); $query = $this->buildQuery($baseQuery); $this->pager = new sfDoctrinePager('personne',sfConfig::get('app_max_personne_on_list_homepage')); $this->pager->setQuery($query); $this->pager->setPage($request->getParameter('page', 1)); $this->pager->init(); } . . . .....
Auriez vous une idée ?
D'avance merci.
Partager