Hi everyone,
I am trying to build a nice REST API for my website and I had never tried
it through CakePHP. I started to follow the (short) instructions, however,
the way it works looks totally different from what I can read in the
Cookbook.
I use CakePHP 2.2.1.
Here's what I've done so far:
*app/Controller/OrdersController.php*
<?php
class OrdersController extends AppController {
public function fetch($accountId) {
$this->loadModel('Account');
$this->Account->id = $accountId;
$orders = $this->Order->find('all', array(
'conditions' => array('Order.account_id' => $accountId)
));
$response = $orders;
$this->set(compact('response'));
}
}
*app/View/Orders/xml/fetch.ctp*
<?php
$xml = Xml::fromArray(array('orders' => $orders));
echo $xml->asXML();
I tried this with the first account and everything was fine
*Ouput:*
<orders>
<Order>
<id>502cc39f-5b74-4a25-9bb2-670458d0d2b2</id>
<order_ref>96277</order_ref>
<account_id>502cc39d-8640-465a-b0da-670458d0d2b2</account_id>
<created>2012-08-16 09:55:43</created>
<modified>2012-08-16 09:55:43</modified>
</Order>
</orders>
Everything is fine with an account that has one order.
However, with an account that has several orders, this doesn't work anymore.
*Expected output:*
<orders>
<Order>
<id>502cc39f-66eb-59d2-2337-670458d0d2b2</id>
<order_ref>96255</order_ref>
<account_id>502cc39d-6325-ad25-5b64-670458d0d2b2</account_id>
<created>2012-08-16 09:42:33</created>
<modified>2012-08-16 09:42:33</modified>
</Order>
<Order>
<id>502cc39f-ee21-3c89-8120-670458d0d2b2</id>
<order_ref>96231</order_ref>
<account_id>502cc39d-6325-ad25-5b64-670458d0d2b2</account_id>
<created>2012-08-16 09:21:01</created>
<modified>2012-08-16 09:21:01</modified>
</Order>
</orders>
*
*
*What I get:*
This page contains the following errors:
error on line 1 at column 367: Entity 'nbsp' not defined
Below is a rendering of the page up to the first error.*Warning*
(2)<http://devapi.ssl247.net/orders/fetch/502cc1be-7e48-4913-89c2-65f058d0d2b2.xml>:
SimpleXMLElement::__construct()
[simplexmlelement.--construct<http://devapi.ssl247.net/orders/fetch/simplexmlelement.--construct>]:
Entity: line 3: parser error : Extra content at the end of the document [*
CORE\Cake\Utility\Xml.php*, line
*197*]Code<http://devapi.ssl247.net/orders/fetch/502cc1be-7e48-4913-89c2-65f058d0d2b2.xml>
Context<http://devapi.ssl247.net/orders/fetch/502cc1be-7e48-4913-89c2-65f058d0d2b2.xml>
I assume that Xml::fromArray() doesn't accept multiple numeric keys. Or
something like this. I don't mind editing my PHP array to get he XML I
expect but I really don't know how I should write my array for this :-(
Any help is welcome.
Thank you!!
Alex
--
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
Visit this group at http://groups.google.com/group/cake-php?hl=en-US.