CakePHPで楽天WEBサービスを使う(ジャンルコード)

今回は、ジャンルコード検索を実装してみたいと思います。

この連載の過去の記事はこちらを参照してください。

まずは、モデルから。

app/models/Genrecode.php

class Genrecode extends AppModel {

var $name = "Genrecode";

//商品検索APIの共通パラメータ
var $api_def = array(
'developerId' => DEV_ID,
'affiliateId' => AFF_ID,
'operation' => 'GenreSearch',
'version' => '2007-04-11',
);

function findAll($conditions = array()) {

$req = 'http://api.rakuten.co.jp/rws/1.11/rest?';

$api_params = array_merge($conditions,$this->api_def);

uses('Xml');

$req .= http_build_query($api_params);

$xml = new XML($req);
$xml_array = Set::reverse($xml);

return $xml_array['Response']['Body']['GenreSearch'];

}
}

つづいてコントローラーです。

app/controllers/Genrecodes_controller.php

class GenrecodesController extends AppController {

var $name = 'Genrecodes';
var $uses = array('Genrecode');
var $helpers = array ('Html','Form');

function index($genreid=0,$page = 1) {

$conditions = array (
'genreId' => $genreid,
);

$data = $this->Genrecode->findAll($conditions);
$this->set('genrecodes', $data['Child']);
}
}

ジャンル検索では、ルートのジャンルIDが「0」なので、変数$genreidの初期値は0です。

つづいてビュー。

app/views/genrecodes/index.ctp

これで、「http://localhost/genrecodes」にアクセスすると、下記のようなリスト表示が出てきます。

ジャンルコード表示

さて、、、これを右のサイドバー、つまりはエレメントの中で前ページ共通でやりたいのだが、、、どうしたらいいのだろうか?(^^;)

また勉強の日々が続く(^^;)


CakePHP ポケットリファレンス (Pocket Reference)