2008-03-12

CakePHP アップデートで携帯ページ NG

CakePHP で作成したサイトの携帯ページを CakePHP 携帯用ビューを表示する(Shin x blog さん) などを参考に実装していました。当初は、1.2.0.5875-pre-beta を使ってうまく行っていたのですが 1.2.0.6311-beta にアップデートしたところ、文字化けに見舞われました。念のため Subversion にブランチして作業していたのですぐに戻せるのですが、悔しいので少し調べてみました。

状況を落ち着いてみてみると、どうやら View は、webservice のものが選択されているが、Layouts が通常のものの模様。render まわりと当たりをつけて cake/libs/view/view.php を diff してみたら、かなり大幅に変ってる。他は、ほぼ問題ないので _getViewFileName と _getLayoutFileName のみに着目すると、やっぱり、webservices 判定が _getViewFileName にはあるが、_getLayoutFileName からはなくなってました。

@@ -821,6 +821,9 @@
}
$subDir = null;

+ if (!is_null($this->webservices)) {
+ $subDir = strtolower($this->webservices) . DS;
+ }
if (!is_null($this->layoutPath)) {
$subDir = $this->layoutPath . DS;
}


こんな修正で動くようにはなります。しかし、コアに変更入れるのは、さて、どうしたものか...



cake/libs/router.php には 「webservice は、非推奨で将来的にはサポートしなくなるよ。Router::parseExtensions() を使ってね。」という記述がありますね。1.2 系で作業始めたときも情報の少なさに「しくじったか?」とは、思ったのですが...



次回からがんばります。

2 件のコメント:

Unknown さんのコメント...

GOOGLEから検索して飛んできたのですが、ちょうど同じテーマにぶつかっていました。

cakePHP1.2のアルファ版から使っており、携帯用の表示にwebservicesを使っていたのですが、今回は書いてくれてあるcoreを変更でまた違う方法を考えているとこです。

ドキュメントが少ないのは困ったもんです;

また携帯表示のいい方法あったら載せてくれたらなと思います^^;

ubu さんのコメント...

どうもです。ものすごい遅RESですみません。

未だに webservices 以外の実装方法には手がつけられてません。他の部分も、CakePHP は、奥が深いです。