cakephp 2.5.3
, .
-, Helper Component, PaginationComponent PaginationHelper .
/app/Controller/Component/_PaginatorComponent.php
<?php
App::import('Component', 'Paginator');
class _PaginatorComponent extends PaginatorComponent{
public function paginate($object = null, $scope = array(), $whitelist = array())
{
if (is_array($object))
$object = null;
$object = $this->_getObject($object);
$options = $this->mergeOptions($object->alias);
$params = $this->Controller->request->params;
if(isset($params['named'][$options['pageRequestName']]))
{
$page = $params['named'][$options['pageRequestName']];
$this->Controller->request->params['named']['page'] =intval($page);
}
else
$this->Controller->request->params['named']['page'] = 1;
$pageRequestName = null;
$results = parent::paginate($object, $scope, $whitelist);
unset($this->Controller->request->params['named']['page']);
$options = $this->mergeOptions($object->alias);
if(isset($options['pageRequestName']))
$this->Controller->request['paging'] = array_merge_recursive(
(array)$this->Controller->request['paging'],
array($object->alias => array('pageRequestName'=>$options['pageRequestName']))
);
return $results;
}
}
/app/View/Helper/_PaginatorHelper.php
<?php
App::uses('PaginatorHelper', 'View/Helper');
class _PaginatorHelper extends PaginatorHelper{
public function link($title, $url = array(), $options = array()) {
if(isset($url['page']))
{
$params = $this->params($this->model);
if(isset($params['pageRequestName']))
{
$url[$params['pageRequestName']] = $url['page'];
unset($url['page']);
}
}
return parent::link($title,$url,$options);
}
protected function _pagingLink($which, $title = null, $options = array(), $disabledTitle = null, $disabledOptions = array())
{
$disabledOptions['model'] = $options['model'];
return parent::_pagingLink($which, $title, $options, $disabledTitle, $disabledOptions);
}
private $model = null;
public function numbers($options = array())
{
if(isset($options['model']))
$this->model = $options['model'];
return parent::numbers($options);
}
}
, :
/app/View/Element/paging.ctp
<div class="paging">
<?php
$options = !isset($modelName)?array():array('model'=>$modelName);
echo $this->Paginator->prev('< ' . __('zurück'), $options, null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => '')+$options);
echo $this->Paginator->next(__('vor') . ' >', $options, null, array('class' => 'next disabled'));
?>
</div>
:
()
<?php
echo $this->element('paging',array('modelName'=>'Customer'));
?>
paginator, cakephp, paginator. PaginatorHelper PaginatorComponent :
( )
public $helpers = array('Paginator' => array('className' => '_Paginator' ));
public $components = array('Paginator' => array('className' => '_Paginator' ));
. $Paginate :
()
public $paginate = array(
'Customer' => array (
'limit' => 25,
'pageRequestName' => 'cpage'
),
'Employer' => array (
'limit' => 25,
'pageRequestName' => 'erpage'
),
'Employee' => array (
'limit' => 25,
'pageRequestName' => 'eepage'
)
);
:
$this->Paginator->settings['Customer'] = array(
'conditions'=>array(
'OR'=>array(
array('name LIKE'=>'%'.$search_query.'%'),
)
),
'limit' => 5,
'pageRequestName' => 'cpage'
);
$result = $this->Paginator->paginate('Customer');
, , javascript, .
'paramType' = > 'named'
, PaginationComponent PaginationHelper , .