0

私は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拡張子をルーティングするときと、標準のビューが要求されるときとでは、どういうわけかビュー環境を設定していると思います。

私が髪を失う前に、私のためにいくつかの光を当ててください。お願いします????ありがとう!

4

1 に答える 1

0

応答と要求オブジェクトを見ましたか

http://mark-story.com/posts/view/the-cakerequest-object-in-cakephp-2-0 - この記事は Cake 2 がアルファ版だったときに書かれたものだと思いますが、Mark はリクエスト オブジェクト (別の応答用エントリ)

両方のオブジェクトがコントローラーhttp://book.cakephp.org/2.0/en/controllers/request-response.htmlに渡されます

今のところ、リクエスト構成を使用してレイアウトの切り替えを処理していると思います(ただし、それがなくても実行できます)

于 2011-12-18T01:08:15.857 に答える