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/>
<message>
DOMText::__construct() expects parameter 1 to be string, object given
</message>
<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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.