2012年10月28日

cakePHP1.3からcakephp2.2にREST APIを移行する

blogramランキング参加中!

CakePHP2 実践入門 (WEB DB PRESS plus)

新品価格
¥3,024から
(2012/10/28 22:46時点)



cakephp1.3を
いい加減cakephp2.2に移行しようと思う

まずは、REST APIを移行しようと試行錯誤してみた
以下、内容

間違っていたら教えてください
というか間違っているという指摘をください。
この仕様はちょっとひどい気がするので。


・1.3の場合
 以下の通りに実装した。
確かに楽だった。
http://book.cakephp.org/1.3/ja/view/1239/%E5%8D%98%E7%B4%94%E3%81%AA%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97


・$xml全面書き換え
cakePHP2.0で$xmlが使えなくなった?
で書いたが、$xmlは全面書き換えくらっているので
移行は結構しんどそうというのは覚悟していた


・XML Viewの使い方
XML Viewを使うと非常に便利と書かれていたのでこれ使ってみた
app/Config/routes.php に以下を記述
Router::parseExtensions('json', 'xml');
これでjsonとxmlを楽に生成できる。
その後、コントローラーで以下を宣言
var $components = array('RequestHandler');
これでページを開くときにURLの最後に.xmlだと
/View/hogehoge/xml/
jsonだと
/View/hogehoge/json/
が参照される。
以下のサイトにも書いてあるが、viewファイルがなくても出力する方法もある
http://book.cakephp.org/2.0/ja/views/json-and-xml-views.html


・XML Viewで困った点
$test=array(
0=>object
1=>object
2=>object)
$this->set('test2',$test);
上をやると以下になる。
<test2>
objectの中身
</test2>
<test2>
objectの中身
</test2>
いやちょっと待ってwwwww
本来は、以下になるはずなんだけど。。。。。
<test2>
objectの中身
objectの中身
</test2>


・XML Viewで困った点2
連想配列の添字が大文字でも1.3のときは小文字になったが
XML Viewではならない。
何系っていうか分からないけど
testCountってなっていたら2系はそのままだけど
1.3ならtest_countになる。


・String could not be parsed as XML
じゃあ、cakeのライブラリ使ってxml自力で作ってやるよって思い
以下のような配列で、
$test=array(
0=>object
1=>object
2=>object)
以下を実行すると上記のエラーが出る。
$xmlObject = Xml::fromArray($test)
$xmlObject->asXML()
たぶん配列を使うとダメっぽい。
http://book.cakephp.org/2.0/en/core-utility-libraries/xml.html#Xml


・1.3と互換性を保つには
配列を渡さずに、個別の値ごとに$this->setして
添字は手動で書き換えて
独自viewで構築するしかなさそう。


いっくらなんでもこれはひどいんじゃないですかね。
自分が何か大きな勘違いを置かしているのかしら。。。。
単一の値を返すAPIにしか使えないっぽいなぁ。。。この仕様だと。
確かにjsonとxmlの変更を勝手にやってくれるのは便利なのですがね。。。


タグ:cakephp
posted by マスタカ at 22:50 | Comment(0) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。