CakePHP
  • Documentation
    • Book
    • API
    • Videos
    • Reporting Security Issues
    • Privacy Policy
    • Logos & Trademarks
  • Business Solutions
  • Swag
  • Road Trip
  • Team
  • Community
    • Community
    • Get Involved
    • Issues (GitHub)
    • Bakery
    • Featured Resources
    • Training
    • Meetups
    • My CakePHP
    • CakeFest
    • Newsletter
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • Help & Support
    • Forum
    • Stack Overflow
    • Slack
    • Paid Support
CakePHP

C CakePHP 2.6 API

  • Overview
  • Tree
  • Deprecated
  • Version:
    • 2.6
      • 4.2
      • 4.1
      • 4.0
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

Packages

  • Cake
    • Cache
      • Engine
    • Configure
    • Console
      • Command
        • Task
    • Controller
      • Component
        • Acl
        • Auth
    • Core
    • Error
    • Event
    • I18n
    • Log
      • Engine
    • Model
      • Behavior
      • Datasource
        • Database
        • Session
      • Validator
    • Network
      • Email
      • Http
    • Routing
      • Filter
      • Route
    • TestSuite
      • Coverage
      • Fixture
      • Reporter
    • Utility
    • View
      • Helper

Classes

  • CakeRequest
  • CakeResponse
  • CakeSocket

Class CakeRequest

A class that helps wrap Request information and particulars about a single request. Provides methods commonly used to introspect on the request headers and request body.

Has both an Array and Object interface. You can access framework parameters using indexes:

$request['controller'] or $request->controller.

CakeRequest implements ArrayAccess
Package: Cake\Network
Copyright: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
License: MIT License
Location: Cake/Network/CakeRequest.php

Properties summary

  • $_detectors protected
    array
    The built in detectors used with is() can be modified with addDetector().
  • $_input protected
    string

    Copy of php://input. Since this stream can only be read once in most SAPI's keep a copy of it so users don't need to know about that detail.

  • $base public
    string
    Base URL path.
  • $data public
    array

    Array of POST data. Will contain form data as well as uploaded files. Inputs prefixed with 'data' will have the data prefix removed. If there is overlap between an input prefixed with data and one without, the 'data' prefixed value will take precedence.

  • $here public
    string
    The full address to the current request
  • $params public
    array
    Array of parameters parsed from the URL.
  • $query public
    array
    Array of querystring arguments
  • $url public
    string
    The URL string used for the request.
  • $webroot public
    string
    webroot path segment for the request.

Method Summary

  • __call() public
    Missing method handler, handles wrapping older style isAjax() type methods
  • __construct() public
    Constructor
  • __get() public
    Magic get method allows access to parsed routing parameters directly on the object.
  • __isset() public

    Magic isset method allows isset/empty checks on routing parameters.

  • _base() protected
    Returns a base URL and sets the proper webroot
  • _parseAcceptWithQualifier() protected static
    Parse Accept* headers with qualifier options.
  • _processFileData() protected

    Recursively walks the FILES array restructuring the data into something sane and useable.

  • _processFiles() protected
    Process $_FILES and move things into the object.
  • _processGet() protected
    Process the GET parameters and move things into the object.
  • _processPost() protected

    process the post data and set what is there into the object. processed data is available at $this->data

  • _readInput() protected
    Read data from php://input, mocked in tests.
  • _url() protected

    Get the request uri. Looks in PATH_INFO first, as this is the exact value we need prepared by PHP. Following that, REQUEST_URI, PHP_SELF, HTTP_X_REWRITE_URL and argv are checked in that order. Each of these server variables have the base path, and query strings stripped off

  • acceptLanguage() public static
    Get the languages accepted by the client, or check if a specific language is accepted.
  • accepts() public

    Find out which content types the client accepts or check if they accept a particular type of content.

  • addDetector() public

    Add a new detector to the list of detectors that a request can use. There are several different formats and types of detectors that can be set.

  • addParams() public

    Add parameters to the request's parsed parameter set. This will overwrite any existing parameters. This modifies the parameters available through $request->params.

  • addPaths() public

    Add paths to the requests' paths vars. This will overwrite any existing paths. Provides an easy way to modify, here, webroot and base.

  • allowMethod() public

    Allow only certain HTTP request methods. If the request method does not match a 405 error will be shown and the required "Allow" response header will be set.

  • clientIp() public
    Get the IP the client is using, or says they are using.
  • data() public

    Provides a read/write accessor for $this->data. Allows you to use a syntax similar to CakeSession for reading post data.

  • domain() public
    Get the domain name and include $tldLength segments of the tld.
  • header() public static
    Read an HTTP header from the Request information.
  • here() public
    Get the value of the current requests URL. Will include named parameters and querystring arguments.
  • host() public
    Get the host that the request was handled on.
  • input() public

    Read data from php://input. Useful when interacting with XML or JSON request body content.

  • is() public
    Check whether or not a Request is a certain type.
  • isAll() public
    Check that a request matches all the given types.
  • method() public

    Get the HTTP method used for this request. There are a few ways to specify a method.

  • offsetExists() public
    Array access isset() implementation
  • offsetGet() public
    Array access read implementation
  • offsetSet() public
    Array access write implementation
  • offsetUnset() public
    Array access unset() implementation
  • onlyAllow() public deprecated
    Alias of CakeRequest::allowMethod() for backwards compatibility.
  • param() public
    Safely access the values in $this->params.
  • parseAccept() public

    Parse the HTTP_ACCEPT header and return a sorted array with content types as the keys, and pref values as the values.

  • query() public

    Provides a read accessor for $this->query. Allows you to use a syntax similar to CakeSession for reading URL query data.

  • referer() public
    Returns the referer that referred this request.
  • setInput() public

    Modify data originally from php://input. Useful for altering json/xml data in middleware or DispatcherFilters before it gets to RequestHandlerComponent

  • subdomains() public
    Get the subdomains for a host.

Method Detail

__call() public ¶

__call( string $name , array $params )

Missing method handler, handles wrapping older style isAjax() type methods

Parameters
string $name
The method called
array $params
Array of parameters for the method call
Returns
mixed
Throws
CakeException
when an invalid method is called.

__construct() public ¶

__construct( string $url = null , boolean $parseEnvironment = true )

Constructor

Parameters
string $url optional null
Trimmed URL string to use. Should not contain the application base path.
boolean $parseEnvironment optional true
Set to false to not auto parse the environment. ie. GET, POST and FILES.

__get() public ¶

__get( string $name )

Magic get method allows access to parsed routing parameters directly on the object.

Allows access to $this->params['controller'] via $this->controller

Parameters
string $name
The property being accessed.
Returns
mixed
Either the value of the parameter or null.

__isset() public ¶

__isset( string $name )

Magic isset method allows isset/empty checks on routing parameters.

Parameters
string $name
The property being accessed.
Returns
boolean
Existence

_base() protected ¶

_base( )

Returns a base URL and sets the proper webroot

If CakePHP is called with index.php in the URL even though URL Rewriting is activated (and thus not needed) it swallows the unnecessary part from $base to prevent issue #3318.

Returns
string
Base URL
Link
https://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/3318

_parseAcceptWithQualifier() protected static ¶

_parseAcceptWithQualifier( string $header )

Parse Accept* headers with qualifier options.

Only qualifiers will be extracted, any other accept extensions will be discarded as they are not frequently used.

Parameters
string $header
Header to parse.
Returns
array

_processFileData() protected ¶

_processFileData( string $path , array $data , string $field )

Recursively walks the FILES array restructuring the data into something sane and useable.

Parameters
string $path
The dot separated path to insert $data into.
array $data
The data to traverse/insert.
string $field
The terminal field name, which is the top level key in $_FILES.

_processFiles() protected ¶

_processFiles( )

Process $_FILES and move things into the object.

_processGet() protected ¶

_processGet( )

Process the GET parameters and move things into the object.

_processPost() protected ¶

_processPost( )

process the post data and set what is there into the object. processed data is available at $this->data

Will merge POST vars prefixed with data, and ones without into a single array. Variables prefixed with data will overwrite those without.

If you have mixed POST values be careful not to make any top level keys numeric containing arrays. Hash::merge() is used to merge data, and it has possibly unexpected behavior in this situation.

_readInput() protected ¶

_readInput( )

Read data from php://input, mocked in tests.

Returns
string
contents of php://input

_url() protected ¶

_url( )

Get the request uri. Looks in PATH_INFO first, as this is the exact value we need prepared by PHP. Following that, REQUEST_URI, PHP_SELF, HTTP_X_REWRITE_URL and argv are checked in that order. Each of these server variables have the base path, and query strings stripped off

Returns
string
URI The CakePHP request path that is being accessed.

acceptLanguage() public static ¶

acceptLanguage( string $language = null )

Get the languages accepted by the client, or check if a specific language is accepted.

Get the list of accepted languages:

CakeRequest::acceptLanguage(); ```

Check if a specific language is accepted:

CakeRequest::acceptLanguage('es-es'); ```

Parameters
string $language optional null
The language to test.
Returns
mixed
If a $language is provided, a boolean. Otherwise the array of accepted languages.

accepts() public ¶

accepts( string $type = null )

Find out which content types the client accepts or check if they accept a particular type of content.

Get all types:

$this->request->accepts();

Check for a single type:

$this->request->accepts('application/json');

This method will order the returned content types by the preference values indicated by the client.

Parameters
string $type optional null
The content type to check for. Leave null to get all types a client accepts.
Returns
mixed

Either an array of all the types the client accepts or a boolean if they accept the provided type.


addDetector() public ¶

addDetector( string $name , array $options )

Add a new detector to the list of detectors that a request can use. There are several different formats and types of detectors that can be set.

Environment value comparison

An environment value comparison, compares a value fetched from env() to a known value the environment value is equality checked against the provided value.

e.g addDetector('post', array('env' => 'REQUEST_METHOD', 'value' => 'POST'))

Pattern value comparison

Pattern value comparison allows you to compare a value fetched from env() to a regular expression.

e.g addDetector('iphone', array('env' => 'HTTP_USER_AGENT', 'pattern' => '/iPhone/i'));

Option based comparison

Option based comparisons use a list of options to create a regular expression. Subsequent calls to add an already defined options detector will merge the options.

e.g addDetector('mobile', array('env' => 'HTTP_USER_AGENT', 'options' => array('Fennec')));

Callback detectors

Callback detectors allow you to provide a 'callback' type to handle the check. The callback will receive the request object as its only parameter.

e.g addDetector('custom', array('callback' => array('SomeClass', 'somemethod')));

Request parameter detectors

Allows for custom detectors on the request parameters.

e.g addDetector('requested', array('param' => 'requested', 'value' => 1)

You can also make parameter detectors that accept multiple values using the options key. This is useful when you want to check if a request parameter is in a list of options.

addDetector('extension', array('param' => 'ext', 'options' => array('pdf', 'csv'))

Parameters
string $name
The name of the detector.
array $options
The options for the detector definition. See above.

addParams() public ¶

addParams( array $params )

Add parameters to the request's parsed parameter set. This will overwrite any existing parameters. This modifies the parameters available through $request->params.

Parameters
array $params
Array of parameters to merge in
Returns

$this

addPaths() public ¶

addPaths( array $paths )

Add paths to the requests' paths vars. This will overwrite any existing paths. Provides an easy way to modify, here, webroot and base.

Parameters
array $paths
Array of paths to merge in
Returns

$this

allowMethod() public ¶

allowMethod( string|array $methods )

Allow only certain HTTP request methods. If the request method does not match a 405 error will be shown and the required "Allow" response header will be set.

Example:

$this->request->allowMethod('post', 'delete'); or $this->request->allowMethod(array('post', 'delete'));

If the request would be GET, response header "Allow: POST, DELETE" will be set and a 405 error will be returned.

Parameters
string|array $methods
Allowed HTTP request methods.
Returns
boolean
true
Throws
MethodNotAllowedException

clientIp() public ¶

clientIp( boolean $safe = true )

Get the IP the client is using, or says they are using.

Parameters
boolean $safe optional true

Use safe = false when you think the user might manipulate their HTTP_CLIENT_IP header. Setting $safe = false will also look at HTTP_X_FORWARDED_FOR

Returns
string
The client IP.

data() public ¶

data( string $name )

Provides a read/write accessor for $this->data. Allows you to use a syntax similar to CakeSession for reading post data.

Reading values.

$request->data('Post.title');

When reading values you will get null for keys/values that do not exist.

Writing values

$request->data('Post.title', 'New post!');

You can write to any value, even paths/keys that do not exist, and the arrays will be created for you.

Parameters
string $name
Dot separated name of the value to read/write, one or more args.
Returns
mixed|CakeRequest
$this Either the value being read, or $this so you can chain consecutive writes.

domain() public ¶

domain( integer $tldLength = 1 )

Get the domain name and include $tldLength segments of the tld.

Parameters
integer $tldLength optional 1

Number of segments your tld contains. For example: example.com contains 1 tld. While example.co.uk contains 2.

Returns
string
Domain name without subdomains.

header() public static ¶

header( string $name )

Read an HTTP header from the Request information.

Parameters
string $name
Name of the header you want.
Returns
mixed
Either false on no header being set or the value of the header.

here() public ¶

here( boolean $base = true )

Get the value of the current requests URL. Will include named parameters and querystring arguments.

Parameters
boolean $base optional true
Include the base path, set to false to trim the base path off.
Returns
string
the current request URL including query string args.

host() public ¶

host( boolean $trustProxy = false )

Get the host that the request was handled on.

Parameters
boolean $trustProxy optional false
Whether or not to trust the proxy host.
Returns
string

input() public ¶

input( string $callback = null )

Read data from php://input. Useful when interacting with XML or JSON request body content.

Getting input with a decoding function:

$this->request->input('json_decode');

Getting input using a decoding function, and additional params:

$this->request->input('Xml::build', array('return' => 'DOMDocument'));

Any additional parameters are applied to the callback in the order they are given.

Parameters
string $callback optional null

A decoding callback that will convert the string data to another representation. Leave empty to access the raw input data. You can also supply additional parameters for the decoding callback using var args, see above.

Returns
The
decoded/processed request data.

is() public ¶

is( string|array $type )

Check whether or not a Request is a certain type.

Uses the built in detection rules as well as additional rules defined with CakeRequest::addDetector(). Any detector can be called as is($type) or is$Type().

Parameters
string|array $type

The type of request you want to check. If an array this method will return true if the request matches any type.

Returns
boolean
Whether or not the request is the type you are checking.

isAll() public ¶

isAll( array $types )

Check that a request matches all the given types.

Allows you to test multiple types and union the results. See CakeRequest::is() for how to add additional types and the built-in types.

Parameters
array $types
The types to check.
Returns
boolean
Success.
See
CakeRequest::is()

method() public ¶

method( )

Get the HTTP method used for this request. There are a few ways to specify a method.

  • If your client supports it you can use native HTTP methods.
  • You can set the HTTP-X-Method-Override header.
  • You can submit an input with the name _method

Any of these 3 approaches can be used to set the HTTP method used by CakePHP internally, and will effect the result of this method.

Returns
string
The name of the HTTP method used.

offsetExists() public ¶

offsetExists( string $name )

Array access isset() implementation

Parameters
string $name
thing to check.
Returns
boolean
Implementation of
ArrayAccess::offsetExists()

offsetGet() public ¶

offsetGet( string $name )

Array access read implementation

Parameters
string $name
Name of the key being accessed.
Returns
mixed
Implementation of
ArrayAccess::offsetGet()

offsetSet() public ¶

offsetSet( string $name , mixed $value )

Array access write implementation

Parameters
string $name
Name of the key being written
mixed $value
The value being written.
Implementation of
ArrayAccess::offsetSet()

offsetUnset() public ¶

offsetUnset( string $name )

Array access unset() implementation

Parameters
string $name
Name to unset.
Implementation of
ArrayAccess::offsetUnset()

onlyAllow() public deprecated ¶

onlyAllow( string|array $methods )

Alias of CakeRequest::allowMethod() for backwards compatibility.

Deprecated
3.0.0 Since 2.5, use CakeRequest::allowMethod() instead.
Parameters
string|array $methods
Allowed HTTP request methods.
Returns
boolean
true
Throws
MethodNotAllowedException
See
CakeRequest::allowMethod()

param() public ¶

param( string $name )

Safely access the values in $this->params.

Parameters
string $name
The name of the parameter to get.
Returns
mixed

The value of the provided parameter. Will return false if the parameter doesn't exist or is falsey.


parseAccept() public ¶

parseAccept( )

Parse the HTTP_ACCEPT header and return a sorted array with content types as the keys, and pref values as the values.

Generally you want to use CakeRequest::accept() to get a simple list of the accepted content types.

Returns
array
An array of prefValue => array(content/types)

query() public ¶

query( string $name )

Provides a read accessor for $this->query. Allows you to use a syntax similar to CakeSession for reading URL query data.

Parameters
string $name
Query string variable name
Returns
mixed
The value being read

referer() public ¶

referer( boolean $local = false )

Returns the referer that referred this request.

Parameters
boolean $local optional false
Attempt to return a local address. Local addresses do not contain hostnames.
Returns
string
The referring address for this request.

setInput() public ¶

setInput( string $input )

Modify data originally from php://input. Useful for altering json/xml data in middleware or DispatcherFilters before it gets to RequestHandlerComponent

Parameters
string $input
A string to replace original parsed data from input()

subdomains() public ¶

subdomains( integer $tldLength = 1 )

Get the subdomains for a host.

Parameters
integer $tldLength optional 1

Number of segments your tld contains. For example: example.com contains 1 tld. While example.co.uk contains 2.

Returns
array
An array of subdomains.

Properties detail

$_detectors ¶

protected array

The built in detectors used with is() can be modified with addDetector().

There are several ways to specify a detector, see CakeRequest::addDetector() for the various formats and ways to define detectors.

array(
    'get' => array('env' => 'REQUEST_METHOD', 'value' => 'GET'),
    'post' => array('env' => 'REQUEST_METHOD', 'value' => 'POST'),
    'put' => array('env' => 'REQUEST_METHOD', 'value' => 'PUT'),
    'delete' => array('env' => 'REQUEST_METHOD', 'value' => 'DELETE'),
    'head' => array('env' => 'REQUEST_METHOD', 'value' => 'HEAD'),
    'options' => array('env' => 'REQUEST_METHOD', 'value' => 'OPTIONS'),
    'ssl' => array('env' => 'HTTPS', 'value' => 1),
    'ajax' => array('env' => 'HTTP_X_REQUESTED_WITH', 'value' => 'XMLHttpRequest'),
    'flash' => array('env' => 'HTTP_USER_AGENT', 'pattern' => '/^(Shockwave|Adobe) Flash/'),
    'mobile' => array('env' => 'HTTP_USER_AGENT', 'options' => array(
        'Android', 'AvantGo', 'BB10', 'BlackBerry', 'DoCoMo', 'Fennec', 'iPod', 'iPhone', 'iPad',
        'J2ME', 'MIDP', 'NetFront', 'Nokia', 'Opera Mini', 'Opera Mobi', 'PalmOS', 'PalmSource',
        'portalmmm', 'Plucker', 'ReqwirelessWeb', 'SonyEricsson', 'Symbian', 'UP\\.Browser',
        'webOS', 'Windows CE', 'Windows Phone OS', 'Xiino'
    )),
    'requested' => array('param' => 'requested', 'value' => 1)
)

$_input ¶

protected string

Copy of php://input. Since this stream can only be read once in most SAPI's keep a copy of it so users don't need to know about that detail.

''

$base ¶

public string

Base URL path.

false

$data ¶

public array

Array of POST data. Will contain form data as well as uploaded files. Inputs prefixed with 'data' will have the data prefix removed. If there is overlap between an input prefixed with data and one without, the 'data' prefixed value will take precedence.

array()

$here ¶

public string

The full address to the current request

null

$params ¶

public array

Array of parameters parsed from the URL.

array(
    'plugin' => null,
    'controller' => null,
    'action' => null,
    'named' => array(),
    'pass' => array(),
)

$query ¶

public array

Array of querystring arguments

array()

$url ¶

public string

The URL string used for the request.

$webroot ¶

public string

webroot path segment for the request.

'/'
OpenHub
Rackspace
Rackspace
  • Business Solutions
  • Showcase
  • Documentation
  • Book
  • API
  • Videos
  • Reporting Security Issues
  • Privacy Policy
  • Logos & Trademarks
  • Community
  • Get Involved
  • Issues (GitHub)
  • Bakery
  • Featured Resources
  • Training
  • Meetups
  • My CakePHP
  • CakeFest
  • Newsletter
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • Help & Support
  • Forum
  • Stack Overflow
  • Slack
  • Paid Support

Generated using CakePHP API Docs