CakePHP RestFul WebService正确的文档和可下载的代码

时间:2011-11-21 12:01:48

标签: php rest cakephp-2.0

我一直在关注本教程http://book.cakephp.org/2.0/en/development/rest.html,一遍又一遍地使用cakephp进行宁静的Web服务集成,似乎它不能用于我的目的,因为xml自动构造存在一些问题(错误文档可能吗?)

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

1 个答案:

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

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