【CakePHP3】ページネーション処理でエラーを補足できない!
CakePHP3に「Paginate処理」ってありますよね?
たくさん記事を表示するときに、URLに「?page=1」「?page=2」みたいのを付けて、自動でページをうまく分割表示してくれる機能です。
(公式ページ:「ページネーション」)
ページネーション機能で記事が存在しないページ数を指定したときには「NotFoundException」のエラーが発生するそうなのですが、なんだかエラーが補足できず困ってしまいました・・。
使い方はこんな感じ。
class MenuController extends AppController { public function initialize() { $this->loadComponent('Paginator'); } public $paginate = [ 'limit' => 10, 'order' => [ 'Posts.post_id' => 'desc' ], 'contain' => ['DraftPosts'], ]; public $helpers = [ 'Paginator' => ['templates' => 'paginator-templates'] ]; public function display() { //ページネーション情報を用意 try { $posts = $this->paginate('Draft_posts'); } catch (NotFoundException $e) { $this->render('error'); return; } $this->set('posts', $posts); } }
上記のcatchの処理に入ってこなくて、さらにCakePHPがエラーを吐いてしまって、いろいろと困ってしまったというわけです。
この原因は簡単でした。
「NotFoundException 」の例外を扱うためには
「use Cake\Network\Exception\NotFoundException;」
を宣言しなくてはいけないのでした。
上記コードの先頭で「use」をしたら、無事エラーが補足できるようになりました。
なんとくだらない・・。