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.