発電機管理者には興味深いアプローチがあります。下のようにURIからもソートされます。
これらのパラメータをリンク全体に持たないようにするには(リンクするのが苦労します)、ユーザーセッションに格納します。例を見てみましょう。あなたが持っているアクションで
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();
}
//// more code
protected function setPage($page)
{
$this->getUser()->setAttribute('ef3Pedido.page', $page, 'admin_module');
}
protected function getPage()
{
return $this->getUser()->getAttribute('ef3Pedido.page', 1, 'admin_module');
}
protected function getSort()
{
if (null !== $sort = $this->getUser()->getAttribute('ef3Pedido.sort', null, 'admin_module'))
{
return $sort;
}
$this->setSort($this->configuration->getDefaultSort());
return $this->getUser()->getAttribute('ef3Pedido.sort', null, 'admin_module');
}
protected function setSort(array $sort)
{
if (null !== $sort[0] && null === $sort[1])
{
$sort[1] = 'asc';
}
$this->getUser()->setAttribute('ef3Pedido.sort', $sort, 'admin_module');
}
protected function isValidSortColumn($column)
{
return Doctrine::getTable('Pedido')->hasColumn($column);
}
これはエンドユーザーと開発者にとって素晴らしいアプローチです。
doctrineを使用している場合、これはあなたに興味があるかもしれません:http://www.doctrine-project.org/documentation/manual/1_2/zh/utilities:pagination – greg0ire
ありがとう、ページネーションが処理されますが、そのページdoesnソートの提案はありません。 –
Doctrine_Queryは、ルートから取得するパラメータに応じて変更できます。これは '/ articles /:sorting_column /:sorting_direction /:limit'のようにする必要があります – greg0ire