我正在使用CakePHP 2.0(我相信它是v2.0.3。)和PHP 5.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($本)'仅输出视图的部分转储。在标准视图文件(../view/controller/action.ctp)中执行的相同视图转储输出视图的完整转储。
我相信,当路由为网址扩展时,Cake会以某种方式设置视图环境,而不是在请求标准视图时。
在我失去头发之前,有些人可以为我说清楚。请????谢谢!
答案 0 :(得分:0)
您是否看过响应&请求对象
http://mark-story.com/posts/view/the-cakerequest-object-in-cakephp-2-0 - 这篇文章写的是当蛋糕2是alpha时我认为但是Mark谈到了请求对象的概念(另一个响应条目)
两个对象都传递给控制器 http://book.cakephp.org/2.0/en/controllers/request-response.html
现在我相信你使用请求comp处理布局切换(尽管没有它可以完成)