やったこと

webサービスを作るときに考えたことを垂れ流します

【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」をしたら、無事エラーが補足できるようになりました。

なんとくだらない・・。