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é :
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());
Du coup j'ai bien tout ce qu'il faut à l'affichage mais je ne sais pas comment traiter les filtres dans mon action :

j'ai essayé ca :

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(); 
 
  }
.
.
.
.....
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 ... ?

Auriez vous une idée ?

D'avance merci.