Wednesday, May 2, 2012

Re: get output controller from another controller

Ok, great.

I managed to get what I want using lowpass advice.
$this->RequestHandler->renderAs($this, 'xml');
$this->viewPath = 'Events';
$this->set('event', $event);
$viewdata = $this->render('view');
print $viewdata;

But resetting the $this Controller to normal variables is rather
annoying and another problem right now.


So I tried to use the same code, but by using a separate
$eventsController = new EventsController();
This also doesn't work. (I don't get the XML output, but the html one)
$eventsController = new EventsController();
$this->RequestHandler->renderAs($eventsController, 'xml');
debug($eventsController);
$eventsController->set('event', $event);
$eventsController->set('isAdmin', $this->_isAdmin());
$view = new View($eventsController);
$viewdata = $view->render('view');
print $viewdata;


Any idea why the separate controller option doesn't work?

Thanks

Christophe



On Wed, May 2, 2012 at 3:16 PM, Christophe Vandeplas
<christophe@vandeplas.com> wrote:
> Hello,
>
> Unfortunately the output format (in my variable) is still not the REST XML.
>
> Any other idea?
>
> Thanks
> Christophe
>
> On Sat, Apr 28, 2012 at 6:31 AM, lowpass <zijn.digital@gmail.com> wrote:
>> I don't know if this is all you need but these might help:
>>
>> $this->response->type('xml');
>> $this->viewPath = 'events';
>> $this->view = 'view';  // assuming app/views/events/view.ctp
>>
>> On Fri, Apr 27, 2012 at 2:45 AM, Christophe Vandeplas
>> <christophe@vandeplas.com> wrote:
>>> Hello,
>>>
>>>
>>> ( using CakePHP 2.1 )
>>> I'm building an application that synchronizes data between different
>>> instances of my application. (download and upload)
>>>
>>> My application is REST enabled and thus I can call controller actions
>>> from external applications and get the result in clean xml. However it
>>> is not only a REST server, but also a REST client.
>>>
>>> Downloading data from the other instance is easy. I do a $xml =
>>> Xml::build($xmlurl); and process the $xml variable to import
>>> everything into my database. Perfect.
>>>
>>> However I am stuck in the other direction: Uploading data.
>>> I could simply do a $xmldata = Xml::fromArray($event)->asXML() however
>>> there is some cleaning to be done. This cleaning is what I do in my
>>> REST view as my REST clients should see the same xml as what I'm
>>> uploading to the other instance.
>>> So if I already do all the work in my rest view, why recoding exactly
>>> the same filtering?
>>>
>>> The url /events/view/5.xml  calls  EventsController->view(5) with XML
>>> layout and outputs everything in XML, exactly as I want it.
>>>
>>> I have a ServersController->push() function.
>>> This function needs to do get the same output as /events/view/5.xml ,
>>> and upload it using a REST POST request to the other instance.
>>>
>>> You could say I could simply call the /events/view/5.xml page using an
>>> HTTP request from the application.
>>> However it seems absurd as i) it seems absurd (and inefficient/slow)
>>> to do HTTP requests to yourself to extract data and ii) I have
>>> authentication on my REST calls which makes it a lot more difficult.
>>>
>>> I tried with :
>>> $eventsController = new EventsController();
>>> $eventsController->set('event', $event);
>>> $view = new View($eventsController);
>>> $viewdata = $view->render('view');
>>>
>>> But this only outputs the data in HTML, and not XML.
>>> I tried to play with the CakeResponse object in that newly created
>>> $eventsController, but that doesn't work. (there are no request or
>>> response instances created, and creating them myself doesn't work)
>>>
>>>
>>> So my question is:
>>> What is the best way to get the output of /events/view/5.xml
>>> (EventsController->view(5) ) inside another controller ?
>>>
>>>
>>> Thanks for your expertise.
>>> Christophe
>>>
>>> --
>>> Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
>>> Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
>>>
>>>
>>> To unsubscribe from this group, send email to
>>> cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php
>>
>> --
>> Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
>> Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
>>
>>
>> To unsubscribe from this group, send email to
>> cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: