En continuant sur la remarque de Michel Rotta qui t'indique de générer un module admin -- c'est à dire par la commande :
php symfony doctrine:generate-admin "app" "model" --module="module_name"
ce que tu cherches à faire peut être résolu en réécrivant le contrôleur de l'index. Pour le moment (voir en cache), tu as quelque chose du genre (j'ai pris le code d'un de mes modules) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public function executeIndex(sfWebRequest $request)
{
// sorting
if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort')))
{
$this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
}
// pager
if ($request->getParameter('page'))
{
$this->setPage($request->getParameter('page'));
}
$this->pager = $this->getPager();
$this->sort = $this->getSort();
} |
Pour lister seulement les objets que tu veux, il faut passer au $pager la requête de recherche de tes éléments par l'instruction :
$this->pager->setQuery($q);
où $q est un objet Doctrine_Query.
Ainsi, cela te donnerait quelque chose du genre :
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
| public function executeIndex(sfWebRequest $request)
{
// topic_id
if($request->hasParameter('topic_id'))
{
$this->topic_id = $topic_id = $request->getParameter('topic_id');
}
else
{
return new sfSecurityException('You have to select a topic to display messages. ');
}
// sorting
if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort')))
{
$this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
}
// pager
if ($request->getParameter('page'))
{
$this->setPage($request->getParameter('page'));
}
$q = Doctrine_Core::getTable('Message')->getQuery($topic_id);
$this->pager = $this->getPager();
$this->pager->setQuery($q);
$this->pager->init();
$this->sort = $this->getSort();
} |
(en gras ce qui a changé)
Le $this->pager->init() sert à réinitialiser ton $pager afin qu'il prenne en compte tes changements.
Et tu dois définir dans le MessageTable.class.php la méthode getQuery qui te retourne la Doctrine_Query de recherche de tes éléments.
Autre méthode :
Pour alléger cette méthode, tu as la possibilité dans le generator.yml de spécifier la "table_method", c'est à dire le nom de la méthode qui va te retourne la Doctrine_Query (ici : getQuery -- le nom n'est pas très parlant... va falloir que je refactore ).
Je te renvoie ici à la documentation du site Symfony, qui te renseignera bien mieux que moi !
Autre méthode :
Celle indiquée dans le premier post !
Partager