• CakePHPでcondition付きのpaginate

    投稿 6 2011年7月 by teruchi in 開発日誌 with 0 comments


    Mac OS X Lion 早くこないかなー。
    teruchiです。

    (下記内容はCakePHP 1.3.7で確認)

    CakePHPのPginatorはModelが組み込まれてる状態なので、
    簡単に扱える反面、カスタマイズが難しい。

    なんかのリストをステータスごとに絞り込みたい時、
    社内用の管理画面であればこんな感じで書いてます。

    まずViewではPaginator::link()を使って

    Paginator->link('全て', array('status' => ''))?>
    Paginator->link('公開中', array('status' => 1))?>
    Paginator->link('公開停止中', array('status' => 2))?>
    Paginator->link('削除済み', array('status' => 9))?>

    としてあげます。
    これでページやソート条件が勝手にリンクにつくようになります。

    あとはコントローラー側で、

    $this->paginate = array('order' => array('created' => 'DESC'));

    // 検索条件
    if(!empty($this->params['named']['status'])) {
    $this->paginate['conditions']['status'] = $this->params['named']['status'];
    }

    $this->set('books', $this->paginate());

    な感じで書いてあげれば条件付きで検索されます。

    では今月も良いコードを。

    Top

Top

コメントの投稿

Gravatar