やりたいこと
- header, footer プロパティを無視
- prevPageLabel, nextPageLabel プロパティなどの値を固定
- htmlOptions の class 名を yiiPager から pager に変更
- ページャーの css ファイルを html の head に貼らずに main.css に付け足す
それの何がいいの
- ページャーの見た目がシンプルになる
- ラベルの固定や css ファイルを呼び出さないので、実装がシンプルになる
- 無駄なファイルが assets ディレクトリに作られるのを防ぐ
- コアのウィジェットクラスがどう実装されているか把握できる
- コアのウィジェットクラスの拡張方法が学べる
- ビューでのウィジェットの記述がシンプルになる
やり方
まず framework/web/widgets/pagers 下の pager.css ファイルの中身を main.css に移して yiiPager 部分をすべて pager に置き換えます。続いてprotected/components/widgets 下に LinkPager.php というクラスファイルを作ります。あとは CLinkPager クラスを継承して、自分好みになるようにメソッドをオーバーライドしていきます。init() では、ラベルの値を固定にしたのと、htmlOptions の class 名を yiiPager から pager にしています。run() では header, footer プロパティを echo しないように省略して、$this->registerClientScript() も省いています。こうすることによって、assets ディレクトリにファイルが作られないのと、html の head にページャーの css ファイルを貼るのを防げます。
あとは protected/config/main.php の import 部分に application.components.widgets.*' を付け足して、ビューで <?php $this->widget('LinkPager', compact('pages')); ?> と書けばOKです。ページネーションのロジック部分は CPagination を参考にしてみてください。
0 件のコメント:
コメントを投稿