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 件のコメント:
GOOGLEから検索して飛んできたのですが、ちょうど同じテーマにぶつかっていました。
cakePHP1.2のアルファ版から使っており、携帯用の表示にwebservicesを使っていたのですが、今回は書いてくれてあるcoreを変更でまた違う方法を考えているとこです。
ドキュメントが少ないのは困ったもんです;
また携帯表示のいい方法あったら載せてくれたらなと思います^^;
どうもです。ものすごい遅RESですみません。
未だに webservices 以外の実装方法には手がつけられてません。他の部分も、CakePHP は、奥が深いです。
コメントを投稿