2011-11-21 81 views
2

我一直在关注本教程http://book.cakephp.org/2.0/en/development/rest.html为了宁静的web服务与cakephp反复集成,似乎它不适合我的目的,因为有一些问题与XML自动构建(错误的文档可能?)CakePHP RestFul WebService正确的文档和可下载的代码

无论如何,我的问题是更多的请愿书。你知道在任何情况下一个好的可下载的例子有关在CakePHP 2.0框架上创建Rest Web服务吗?你知道,你可以在哪里看到代码,结构等等。一个简单但很好的例子。

回答

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);的指令期望的,例如,在index.ctp你的XML文件夹下的文件,请查看/帖子里面:

$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(); 
?> 

我知道不是最佳的解决方案。但我愿意接受更深思熟虑的答案。