0

Cake (1.3) ページネーション リミッターに問題があります。コードは次のとおりです。

$page = (!empty($this->params['form']['page'])) ? $this->params['form']['page'] : 1 ;

# Consulta        
$this->paginate = array('limit' => $limit, 'page' => 555, 'order' => array('Candidate.id' => 'ASC'), 'conditions' => $conditions);
$data = $this->paginate('Candidate');

ページ行 1、2、3 などを送信すると問題なく動作しますが、結果に 6 ページがあり、7、8、または 999999 ページを送信すると、クエリは 6 ページを返します。正しいですか?

クエリは、無限の最後のページではなく、空の配列を送信すると思います。

ページが存在しないときに何も送信しないようにする方法はありますか?

4

2 に答える 2

1

これが CakePHP のページネーションの仕組みです。

別の動作が必要な場合$this->params['named']['page'];は、コントローラー アクションで値を取得し、それが無効な数値であるかどうかを判断する必要があります。次に、CakePHP がデフォルトを使用できるようにするのではなく、必要な空のページを返します。

例えば

public function index() {

    $maxPage = 6; // need to calculate the max page value somehow

    if ($this->params['named']['page'] > $maxPage) {
        $rows = array();
    } else {
        $rows = $this->paginate('Model');
    }

    $this->set('rows', $rows);
}
于 2013-04-30T10:23:48.447 に答える