私はCakePHP2.0(v2.0.3だと思います)とPHP5.3.8を使用しています。
CakeのURL拡張機能のサポートを利用するアプリケーションに取り組んでいます。具体的には、URLリクエストが.xml拡張子で終わるたびにXMLを出力しています。拡張子なしでURLリクエストが行われた場合、私のアプリケーションはスターダードビューを表示します。これはすべて美しく機能します-
request .../controller/action.xml renders via view/controller/xml/action.ctp while request .../controller/action renders via view/controller/action.ctp.
これを達成するために、私は次のことを行いました。
1. Added support for url extension; added the following line to route.php -- Router::parseExtensions('xml');
2. Added support request handling; added the following line to MyController.php -- public $components = array('Session', 'RequestHandler');
xmlを出力するために、Cakeの「XML」クラスをPHPの「SimpleXMLElement」クラスと組み合わせて使用しています。私の問題は、完全なxmlが生成されないことです。クラスは入力PHP配列に基づいてxmlを生成することを想定していますが、完全な配列は処理されていないようです。私のxml出力は部分的です。
ビューファイル(.ctp)のソースコードは次のとおりです。
$ simple_xml_elem = Xml :: build($ xml_array); echo $ simple_xml_elem-> asXML();
興味深いことに、この問題をデバッグしようとしているときに、xmlビューファイル(../view/controller/xml/action.ctp)内にビューオブジェクトをダンプしようとすると、同様の動作が観察されることがわかりました。'var_dump($ this)'は、ビューの部分的なダンプのみを出力します。標準のビューファイル(../view/controller/action.ctp)内で実行された同じビューダンプは、ビューの完全なダンプを出力します。
Cakeは、URL拡張子をルーティングするときと、標準のビューが要求されるときとでは、どういうわけかビュー環境を設定していると思います。
私が髪を失う前に、私のためにいくつかの光を当ててください。お願いします????ありがとう!