我一直在关注本教程http://book.cakephp.org/2.0/en/development/rest.html,一遍又一遍地使用cakephp进行宁静的Web服务集成,似乎它不能用于我的目的,因为xml自动构造存在一些问题(错误文档可能吗?)
无论如何,我的问题更多是请愿书。你知道在cakePHP 2.0框架上创建Rest Web服务有关的一个好的可下载示例吗?你知道,你可以在哪里看到代码,结构等等。一个简单但很好的例子。
答案 0 :(得分:4)
好的,我看看会发生什么。 cakePHP查询结果数组构造与xml帮助程序期望看到它以正确创建xml文件的形式之间存在问题。例如,您构建一个数组以获取所有帖子($posts = $this->Post->find('all');
)
这就是你得到的:
$posts = array(
'post' => array(
array(
'id' => '1',
'tittle' => 'The title'
),
array(
'id' => '2',
'tittle' => 'A title once again'
)
)
);
这就像cakePHP上的$xml = Xml::build($xmlPosts);
这样的指令,例如,在你的xml文件夹下的一个index.ctp文件中,在View / Posts中:
$posts = array(
'posts' => array(
'post' => array(
array(
'id' => '1',
'tittle' => 'The title'
),
array(
'id' => '2',
'tittle' => 'A title once again'
)
)
)
);
$xml = Xml::build($post);
问题产生于XML解析器需要数组中的根元素。
关于cakePHP的文档不会告诉你。因此,如果您是烹饪书的初学者,请注意关于REST服务的示例。
您可以在index.ctp xml构造函数中解决执行此类数组重新排列的问题。像这样:
<?php
$xmlPosts = array('posts' => array('post' => $posts));
$xml = Xml::build($xmlPosts);
echo $xml->saveXML();
?>
我知道这不是最佳解决方案。但我愿意接受更深思熟虑的答案。