やったこと

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

【CakePHP3】ページネーションのデザインを指定したらエラー発生!

CakePHP3には「Pagination機能」というのがありますよね。

「前へ」とか「次へ」みたいなボタンを配置して、違うページに遷移する処理を簡単に作れる機能です。
(参考ページ)http://book.cakephp.org/3.0/ja/controllers/components/pagination.html

あの遷移ボタンのデザインを設定する方法が、巷ではよく紹介されています。
(参考ページ)http://book.cakephp.org/3.0/en/views/helpers/paginator.html

それは以下のような方法。

コントローラーに次のようなプロパティを用意して、

public $helpers = [
    'Paginator' => ['templates' => 
    'paginator-templates']
];

「/config/paginator-templates.php」のファイルを作成して、そこにお望みのレイアウト設定を書き込むという方法です。

<?php
return [
    'prevActive' => '<span class="prev"><a rel="prev" href="{{url}}">{{text}}</a></span> | ',
    'prevDisabled' => '',
    'nextActive' => '<span class="next"><a rel="next" href="{{url}}">{{text}}</a></span>',
    'nextDisabled' => '',
    'first' => '<span class="first"><a rel="first" href="{{url}}">{{text}}</a></span> | ',
    'last' => '<span class="last"><a rel="last" href="{{url}}">{{text}}</a></span>',
    'number' => '<span><a href="{{url}}">{{text}}</a></span> | ',
    'current' => '<span class="current">{{text}}</span> | ',
];


しかし上記のように設定したところ、「Error: [RuntimeException] The "Paginator" alias has already been loaded with the following config」というエラーが発生してしまいました・・。

私のCakePHPには「Twitter Bootstrap」を使用できるプラグインを入れているのですが、どうやらその設定とバッティングをしてしまっている様子。

「vendor/friendsofcake/bootstrap-ui/src/View/UIViewTrait.php」のファイルにある以下の記述をコメントアウトしたら、無事自分のデザインが読み込み可能になりました。

    public function initializeUI(array $options = [])
    {
        ・・・
        //$this->loadHelper('Paginator', ['className' => 'BootstrapUI.Paginator']);
    }

このエラーのせいで今日一日つぶれちゃったよ、は~ん・・・。