簡體   English   中英

CakePHP 2.0 REST錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM