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
Copyright: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
License: MIT License
Located at Cake/Network/CakeRequest.php
Method Detail
__callsource 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
mixedmixed
Throws
CakeExceptionwhen an invalid method is called.
__constructsource public
__construct( string $url null , boolean $parseEnvironment true )
Constructor
Parameters
- string
$urloptional null - Trimmed URL string to use. Should not contain the application base path.
- boolean
$parseEnvironmentoptional true - Set to false to not auto parse the environment. ie. GET, POST and FILES.
__getsource 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
mixedEither the value of the parameter or null.
__issetsource public
__isset( string $name )
Magic isset method allows isset/empty checks on routing parameters.
Parameters
- string
$name - The property being accessed.
Returns
booleanExistence
_acceptHeaderDetectorsource protected
_acceptHeaderDetector( array $detect )
Detects if a specific accept header is present.
Parameters
- array
$detect - Detector options array.
Returns
booleanWhether or not the request is the type you are checking.
_basesource 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
stringBase URL
Link
https://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/3318_environmentDetectorsource protected
_environmentDetector( array $detect )
Detects if a specific environment variable is present.
Parameters
- array
$detect - Detector options array.
Returns
booleanWhether or not the request is the type you are checking.
_extensionDetectorsource protected
_extensionDetector( array $detect )
Detects if a URL extension is present.
Parameters
- array
$detect - Detector options array.
Returns
booleanWhether or not the request is the type you are checking.
_headerDetectorsource protected
_headerDetector( array $detect )
Detects if a specific header is present.
Parameters
- array
$detect - Detector options array.
Returns
booleanWhether or not the request is the type you are checking.
_paramDetectorsource protected
_paramDetector( array $detect )
Detects if a specific request parameter is present.
Parameters
- array
$detect - Detector options array.
Returns
booleanWhether or not the request is the type you are checking.
_parseAcceptWithQualifiersource 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
arrayarray
_processFileDatasource 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.
_processGetsource protected
_processGet( )
Process the GET parameters and move things into the object.
_processPostsource 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.
_readInputsource protected
_readInput( )
Read data from php://input, mocked in tests.
Returns
stringcontents of php://input
_urlsource 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
stringURI The CakePHP request path that is being accessed.
acceptLanguagesource 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
$languageoptional null - The language to test.
Returns
mixedIf a $language is provided, a boolean. Otherwise the array of accepted languages.
acceptssource 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
$typeoptional null - The content type to check for. Leave null to get all types a client accepts.
Returns
mixedEither an array of all the types the client accepts or a boolean if they accept the provided type.
addDetectorsource 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.
addParamssource 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
selfself
addPathssource 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
selfself
allowMethodsource 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
booleantrue
Throws
MethodNotAllowedExceptionMethodNotAllowedException
clientIpsource public
clientIp( boolean $safe true )
Get the IP the client is using, or says they are using.
Parameters
- boolean
$safeoptional 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
stringThe client IP.
datasource 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|selfEither the value being read, or $this so you can chain consecutive writes.
domainsource public
domain( integer $tldLength 1 )
Get the domain name and include $tldLength segments of the tld.
Parameters
- integer
$tldLengthoptional 1 - Number of segments your tld contains. For example:
example.comcontains 1 tld. Whileexample.co.ukcontains 2.
Returns
stringDomain name without subdomains.
headersource public static
header( string $name )
Read an HTTP header from the Request information.
Parameters
- string
$name - Name of the header you want.
Returns
mixedEither false on no header being set or the value of the header.
heresource public
here( boolean $base true )
Get the value of the current requests URL. Will include named parameters and querystring arguments.
Parameters
- boolean
$baseoptional true - Include the base path, set to false to trim the base path off.
Returns
stringthe current request URL including query string args.
hostsource public
host( boolean $trustProxy false )
Get the host that the request was handled on.
Parameters
- boolean
$trustProxyoptional false - Whether or not to trust the proxy host.
Returns
stringstring
inputsource 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
$callbackoptional 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
Thedecoded/processed request data.
issource 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
booleanWhether or not the request is the type you are checking.
isAllsource 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
booleanSuccess.
See
CakeRequest::is()methodsource 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
stringThe name of the HTTP method used.
offsetExistssource public
offsetExists( string $name )
Array access isset() implementation
Parameters
- string
$name - thing to check.
Returns
booleanbool
Implementation of
ArrayAccess::offsetExists() offsetGetsource public
offsetGet( string $name )
Array access read implementation
Parameters
- string
$name - Name of the key being accessed.
Returns
mixedmixed
Implementation of
ArrayAccess::offsetGet() offsetSetsource 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() offsetUnsetsource public
offsetUnset( string $name )
Array access unset() implementation
Parameters
- string
$name - Name to unset.
Implementation of
ArrayAccess::offsetUnset() onlyAllowsource public
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
booleantrue
Throws
MethodNotAllowedExceptionMethodNotAllowedException
See
CakeRequest::allowMethod()paramsource public
param( string $name )
Safely access the values in $this->params.
Parameters
- string
$name - The name of the parameter to get.
Returns
mixedThe value of the provided parameter. Will return false if the parameter doesn't exist or is falsey.
parseAcceptsource 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
arrayAn array of prefValue => array(content/types)
querysource 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
mixedThe value being read
referersource public
referer( boolean $local false )
Returns the referer that referred this request.
Parameters
- boolean
$localoptional false - Attempt to return a local address. Local addresses do not contain hostnames.
Returns
stringThe referring address for this request.
setInputsource 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()
subdomainssource public
subdomains( integer $tldLength 1 )
Get the subdomains for a host.
Parameters
- integer
$tldLengthoptional 1 - Number of segments your tld contains. For example:
example.comcontains 1 tld. Whileexample.co.ukcontains 2.
Returns
arrayAn array of subdomains.
Properties summary
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/2.7/class-CakeRequest.html