Exceptions are rendered as json or xml automatically, if you have the 
RequestHandler component loaded

On Tuesday, September 16, 2014 1:32:14 AM UTC+2, Geoffrey Toogood wrote:
>
> Yeah I could have done that but I wanted the response to be quite specific 
> and in JSON or XML depending on how the 3rd party is connecting so just 
> throwing an exception wasn't going to cut it for me. I decided to go with a 
> Dispatcher Filter instead. I just added the code to the beforeDispatch() 
> method in the filter and all is working as expected.
>
> Cheers for the idea though!
> Geoff T
>
>
> On Monday, September 15, 2014 7:50:27 PM UTC+10, José Lorenzo wrote:
>>
>> Just throw an exception:
>>
>> throw new BadRequestException('Missing important headers');
>>
>> On Monday, September 15, 2014 2:02:50 AM UTC+2, Geoffrey Toogood wrote:
>>>
>>> Hey There,
>>>
>>> So I am building an API with the built in REST functionality in CakePHP 
>>>  but I am having a problem with it.
>>>
>>> I am trying to halt a REST request after it has already been primed by 
>>> the default mapResources route feature?  In the app/Config/routes.php I 
>>> have the following route for my customers controller / model..
>>>
>>> Router::mapResources('customers');
>>>
>>> I want to add some code to the beforeFilter() of the AppController 
>>> which, under certain conditions, should stop the current REST request and 
>>> print a different response. 
>>>
>>> Say I do a GET request to the customers controller...
>>>
>>> http://localhost/cakephp/customers.json 
>>>
>>> This returns what I would expect, my customers list in JSON format. 
>>>
>>> However I want certain HTTP_X_ headers to be present in the request 
>>> before I allow it to complete so I have tried using the set method to 
>>> create the response I want and tried to send() the response like so..
>>>
>>> $this->set(array(
>>> 'status' => false,
>>> 'message' => 'Some error message',
>>> 'errors' => array('this went wrong', 'that went wrong'),
>>> '_serialize' => array('status', 'message', 'errors')
>>> ));
>>>
>>> $this->response->send();
>>> $this->_stop();
>>>
>>> In this instance what occurs is that the customers.json response 
>>> completes. I want to halt the request at this point and return my error 
>>> response.
>>>
>>> Does anyone know a good way to do this?
>>>
>>> Thanks,
>>> Geoff T
>>>
>>

-- 
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.

Reply via email to