Justin Yost
Justin Yost

Reputation: 2340

Use a Custom Status Code with CakePHP 2.x

I need to use a custom status code for a response in CakePHP 2.x, for instance 422.

However the CakeResponse class only allows those status codes that are already setup in the CakeResponse class.

Is there a way for me to use my custom status code with CakePHP?

Note if the answer is to use a custom CakeResponse class there is a related question regarding that.

Upvotes: 0

Views: 565

Answers (1)

floriank
floriank

Reputation: 25698

It's cool that you lookup the API but just keep reading:

Queries & sets valid HTTP response codes & messages.

/**
 * Queries & sets valid HTTP response codes & messages.
 *
 * @param int|array $code If $code is an integer, then the corresponding code/message is
 *        returned if it exists, null if it does not exist. If $code is an array, then the
 *        keys are used as codes and the values as messages to add to the default HTTP
 *        codes. The codes must be integers greater than 99 and less than 1000. Keep in
 *        mind that the HTTP specification outlines that status codes begin with a digit
 *        between 1 and 5, which defines the class of response the client is to expect.
 *        Example:
 *
 *        httpCodes(404); // returns array(404 => 'Not Found')
 *
 *        httpCodes(array(
 *            381 => 'Unicorn Moved',
 *            555 => 'Unexpected Minotaur'
 *        )); // sets these new values, and returns true
 *
 *        httpCodes(array(
 *            0 => 'Nothing Here',
 *            -1 => 'Reverse Infinity',
 *            12345 => 'Universal Password',
 *            'Hello' => 'World'
 *        )); // throws an exception due to invalid codes
 *
 *        For more on HTTP status codes see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1
 *
 * @return mixed associative array of the HTTP codes as keys, and the message
 *    strings as values, or null of the given $code does not exist.
 * @throws CakeException If an attempt is made to add an invalid status code
 */

If you plan to use none standard codes with an API I would return the code in a x-header instead or within the response like Jsend does it for example.

Upvotes: 1

Related Questions