PhalconでPaginate(ページング)対応をする
ドキュメント
Phalconのドキュメントを参照しました。
英語はクッソ苦手ですが、コードを見れば何とかなります。
手順
まずはページングを実装したいコントローラーで、Phalconに標準装備されている名前空間を使います。
use Phalcon\Paginator\Adapter\Model as PaginatorModel;
その後はPaginatorModelクラスをインスタンス化して使用しましょう。
$currentPage = $this->request->getQuery('page'); //URLパラメータに'page'を設定し、GETで取得
$robots = Robots::find(); //ここでデータを取得
$paginator = new PaginatorModel(
[
"data" => $robots, //取得した情報
"limit" => 10, //ページングで区切る件数
"page" => $currentPage, //現在のページ
]
);
$page = $paginator->getPaginate(); //ページングした情報を取得
$this->view->setVar('page', $page); //ページングした情報をviewに渡す
viewファイルはvolt記法で以下のようにループで回せます。
{% for item in page.items %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{{ item.type }}</td>
</tr>
{% endfor %}
次のページへ遷移するリンクは以下でOKです。
{{linkTo("index/index?page=" ~ page.next, "»次へ")}}