[英]CakePHP 2.0 REST Error
我有一個簡單的CakePHP 2.0應用程序設置。 我按照本書中的簡單說明在此處設置了簡單的REST服務: http : //book.cakephp.org/2.0/en/development/rest.html
但是,當我嘗試通過/controller/index.xml訪問時,收到無效輸入和錯誤:發生內部錯誤。 隨着以下堆棧
Trace:
#0 /var/www/yoyo/lib/Cake/Utility/Xml.php(87): Xml::fromArray(Array, Array)
#1 /var/www/yoyo/app/View/Offers/xml/index.ctp(3): Xml::build(Array)
#2 /var/www/yoyo/lib/Cake/View/View.php(598): include('/var/www/yoyo/a...')
#3 /var/www/yoyo/lib/Cake/View/View.php(365): View->_render('/var/www/yoyo/a...')
#4 /var/www/yoyo/lib/Cake/Controller/Controller.php(898): View->render(NULL, NULL)
#5 /var/www/yoyo/lib/Cake/Routing/Dispatcher.php(114): Controller->render()
#6 /var/www/yoyo/lib/Cake/Routing/Dispatcher.php(89): Dispatcher- >_invoke(Object(OffersController), Object(CakeRequest), Object(CakeResponse))
#7 /var/www/yoyo/app/webroot/index.php(96): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#8 {main}
提前致謝! -Michael
問題是,當使用$ this-> Model-> find()時,您將以這種形式傳遞每個Model和關聯的模型:
Array
(
[0] => Array
(
[MainModel] => Array
(
[id] => 1
[name] => foo
)
[AssocModelOne] => Array
(
[id] => 23
[name] => bar
)
[AssocModelTwo] => Array
(
[id] => 87
[name] => baz
)
)
)
XML解析器不希望將數字看作數組的頂層。 但它也只想看到一個頂級項目。 當您傳遞多個如下所示時,最終會出現“無效輸入”500錯誤:
Array
(
[MainModel] => Array
(
[id] => 1
[name] => foo
)
[AssocModelOne] => Array
(
[id] => 23
[name] => bar
)
[AssocModelTwo] => Array
(
[id] => 87
[name] => baz
)
)
該數組將無法工作。 為了使它以這種方式工作,必須在使用數據之前將數據放置在另一個被視為“頂層”的陣列中,否則它將失敗。 所以它看起來應該更像:
Array
(
[ModelData] => Array
(
[MainModel] => Array
(
[id] => 1
[name] => foo
)
[AssocModelOne] => Array
(
[id] => 23
[name] => bar
)
[AssocModelTwo] => Array
(
[id] => 87
[name] => baz
)
)
)
我不明白為什么,但這段代碼有效......
在你的xml / index.ctp中:
<?php $xml = Xml::build(array('offers' => array('offer' => $offers))); echo $xml->saveXML(); ?>
當您說通過/controller/index.xml
訪問時,是指GET /offers.xml
,對嗎? 無論如何,我很難弄清所提供信息的問題。 拜托你給你的代碼routes.php
和/xml/index.ctp
?
編輯:“發生內部錯誤”看起來不像PHP錯誤,但跟蹤表明有一個錯誤。 您能否確認這是您唯一獲得的有關錯誤的信息? 另外,似乎Xml::fromArray
函數存在問題,能否請您在index操作中顯示代碼?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.