CakePHPで楽天APIを叩いてみる(2)モデル、その他編
2013/05/09
では、前回に続き、CakePHPで楽天のAPIの2回目です。
今回はモデルとページ送りなどに使うライブラリの用意編です。
前回書き忘れてしまったのですが、URLに検索語句、ページ番号、ソート順、取得個数を指定し、表示させる仕様として進めています。
URLは以下のようになります。
http://***.net/products/productlist/genre_id:0/keyword:CakePHP/sort:1/page:1/get_list_limit:9
オプションはそれぞれ、
genre_id:楽天のジャンルIDを指定。
keyword:検索語句
sort:ソート番号。productモデルで指定します。
page:取得ページ番号
get_list_limit:取得個数
とします。
ページ送りに関してですが、Paginateが使えない(DBを使わないので)ので、PEARのPagerライブラリを使用します。
モデルファイル
ではさっそく、モデルから。ファイル名及びモデル名は商品を表示させるので、product とします。
ちなみにコントローラーは、products_controller.php となります。
app/model/product.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php class Product extends AppModel { var $useTable = false; /** * <楽天>商品並び順 * */ var $sort_option_array = array( 'おすすめ順' => '1', '安い順' => '2', '高い順' => '3', 'レビューの多い順' => '4', '新着入荷順' => '5', ); var $sort_option_str_array = array( 1 => '-affiliateRate', 2 => 'itemPrice', 3 => '-itemPrice', 4 => '-reviewCount', 5 => '-updateTimestamp', ); } ?> |
ソートに利用する配列の用意だけです。
-affiliateRateなど、URLに書くのが面倒なので、数字で代用が効くようにします。
DBは使わないので、var $useTable = false; とします。
PEAR Pagerについて
次に、ページ送りに利用するPEAR Pagerを準備します。
PEARサイトから、PEAR本体とPagerをダウンロードし、解凍したものを、app/vendors 以下に設置します。
設置後のイメージ
app/vendors/Pager-2.4.8/ ←ページャー
app/vendors/PEAR-1.9.4/ ←ペア本体
app/vendors/include_path_vendors.php ←今から作成
設置したら、include_path_vendors.phpを作成し、PEAR.phpまでのパスを記述します。
内容は下記のようなると思います。
1 2 3 |
<?php ini_set('include_path', get_include_path() . PATH_SEPARATOR . APP . 'vendors' . PATH_SEPARATOR . 'PEAR-1.9.4'); ?> |
次に、このままだとページ送りの際にエラーが出るので、Pagerの内容を書き換えます。
ライブラリ本体に手を入れるのはあまり好ましいことではありませんが、仕方ないと諦めました(苦笑)
ちなみにコチラのサイト様を参考としています。
メモ: CakePHPでPEAR - ftshの日記
http://d.hatena.ne.jp/ftsh/20090314/1237011608
【Pager.php】
1 2 |
$classname = 'Pager_' . $mode; //$classfile = 'Pager' . DIRECTORY_SEPARATOR . $mode . '.php'; #<------- 問題箇所 |
↓↓↓↓↓下記に変更
1 |
$classfile = dirname(__FILE__)."/" . $mode . '.php'; #<------- Pager.phpから見てどこにあるか、って感じで。 |
同様に、Pager/Jumping.php, Pager/Sliding.php 内で、 Pager/Common.phpを呼ぶ箇所があり、これを修正。
【Jumping.php】
1 |
//require_once 'Pager/Common.php'; |
↓↓↓↓↓下記に変更
1 |
require_once ( dirname(__FILE__)."/" . 'Common.php' ); |
【Sliding.php】
1 |
//require_once 'Pager/Common.php'; |
↓↓↓↓↓下記に変更
1 |
require_once ( dirname(__FILE__)."/" . 'Common.php' ); |
以上で、モデルとその他ライブラリの準備が整いましたので、次回はコントローラーに進みます。
[tgAmazonItemLookup asin="4798033146" related="1"]