himanshu bhardiya
himanshu bhardiya

Reputation: 81

how to do pagination in symfony1.4

i have many records of user. like username, userid, address etc. i like to display all user records page wise. 10 records per page. how can i do with symfony1.4. i dont have any idea, so i cant posting any code some one tell me that

$query=Doctrine_Query::create()
->select('c.name, d.phone')
->from('company c, companyDetails d')
->where('c.companyId=d.companyId');

$pager = new sfDoctrinePager('company',10);
$pager->setQuery($query);
$pager->setPage(1);
$pager->init();
$this->companys=$pager->getResults();

but i dont know how to implement in symfony1.4

Upvotes: 1

Views: 2094

Answers (1)

Vit Kos
Vit Kos

Reputation: 5755

You need to read more about Pager in symfony, for example, this is my basic action code.

  public function executeIndex(sfWebRequest $request)
  {
    if ($request->getParameter('pages'))
    {
      $this->getUser()->setAttribute('pages', $request->getParameter('pages'));
    }    

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

Also you probably will need these additional functions:

protected function getPager()
  {
    $pager = $this->configuration->getPager('YourModelHere');
    $pager->setQuery($this->buildQuery());
    $pager->setPage($this->getPage());

    $pager->setMaxPerpage($this->getUser()->getAttribute('pages', sfConfig::get('app_results_per_page', 10)));
    $pager->init();

    return $pager;
  }

  protected function setPage($page)
  {
    $this->getUser()->setAttribute('module_name.page', $page, 'admin_module');
  }

  protected function getPage()
  {
    return $this->getUser()->getAttribute('module_name.page', 1, 'admin_module');
  }

Upvotes: 4

Related Questions