Hi
-- I'm wondering what the correct method of serializing models for XML output should be?
After getting XML request routing working, via explicitly specifying xml in the Router::parseExtensions() call, I'm getting an error when doing a serialize on a paginated model.
The error is
<response>
<script/>
<url>/authors.xml</url>
<code>500</code>
</response>
In my AuthorsController, the action is:
public function index() {
$authors = $this->paginate($this->Authors);
$this->set(array(
'authors' => $authors,
'_serialize' => array('authors')
));
}
In AppController, I have
public $components = array('RequestHandler');
In routes.php I have
Router::mapResources('authors');
Router::parseExtensions(['xml']);
I have Template/Authors/index.ctp, but I'm expecting that to get used for the HTML request only. The .xml extension should use the XmlView.
The URL usage is http://localhost/authors.xml
The error trace is:
2014-05-20 23:28:55 Error: [DOMException] DOMText::__construct() expects parameter 1 to be string, object given
Request URL: /authors.xml
Stack Trace:
#0 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\Utility\Xml.php(259): DOMText->__construct(Object(Cake\ORM\ResultSet))
#1 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\Utility\Xml.php(322): Cake\Utility\Xml::_fromArray(Object(DOMDocument), Object(DOMElement), Array, 'tags')
#2 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\Utility\Xml.php(283): Cake\Utility\Xml::_createChild(Array)
#3 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\Utility\Xml.php(216): Cake\Utility\Xml::_fromArray(Object(DOMDocument), Object(DOMDocument), Array, 'tags')
#4 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\View\XmlView.php(151): Cake\Utility\Xml::fromArray(Array, Array)
#5 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\View\XmlView.php(115): Cake\View\XmlView->_serialize(Array)
#6 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\Controller\Controller.php(620): Cake\View\XmlView->render(NULL, NULL)
#7 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\Routing\Dispatcher.php(143): Cake\Controller\Controller->render()
#8 C:\dev\projects\intalio-webservice\src\app\vendor\cakephp\cakephp\src\Routing\Dispatcher.php(109): Cake\Routing\Dispatcher->_invoke(Object(App\Controller\AuthorsController))
#9 C:\dev\projects\intalio-webservice\src\app\webroot\index.php(37): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#10 {main}
I guess because of the way that Models have changed, perhaps a ResultSet can not simply be serialized to XML that way that we might have done previously.
Is what I'm doing expected to work?
Regards
Reuben Helms
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment