Class Controller
Controller
Application controller class for organization of business logic. Provides basic functionality, such as rendering views inside layouts, automatic model availability, redirection, callbacks, and more.
- Object
- Controller
Direct Subclasses
Indirect Subclasses
Link: http://book.cakephp.org/1.3/en/The-Manual/Developing-With-CakePHP/Controllers.html#Introduction
Copyright: Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
License: License (http://www.opensource.org/licenses/mit-license.php)
Location: controller/controller.php
Properties summary
-
$Component
publicstring
Instance of Component used to handle callbacks. -
$__httpCodes
publicarray
Contains a list of the HTTP codes that CakePHP recognizes. These may be queried and/or modified through Controller::httpCodes(), which is also tasked with their lazy-loading.
-
$action
publicstring
The name of the currently requested controller action. -
$autoLayout
publicboolean
Set to true to automatically render the layout around views. -
$autoRender
publicboolean
Set to true to automatically render the view after action logic.
-
$base
publicstring
Base URL path. -
$cacheAction
publicmixed
Used to define methods a controller that will be cached. To cache a single action, the value is set to an array containing keys that match action names and values that denote cache expiration times (in seconds).
-
$components
publicarray
Array containing the names of components this controller uses. Component names should not contain the "Component" portion of the classname.
-
$data
publicarray
Data POSTed to the controller using the HtmlHelper. Data here is accessible using the
$this->data['ModelName']['fieldName']
pattern. -
$ext
publicstring
File extension for view templates. Defaults to Cake's conventional ".ctp". -
$helpers
publicmixed
An array containing the names of helpers this controller uses. The array elements should not contain the "Helper" part of the classname.
-
$here
publicstring
Stores the current URL, relative to the webroot of the application. -
$layout
publicstring
The name of the layout file to render the view inside of. The name specified is the filename of the layout in /app/views/layouts without the .ctp extension.
-
$layoutPath
publicstring
The name of the layouts subfolder containing layouts for this controller. -
$methods
publicarray
Holds current methods of the controller -
$modelClass
publicstring
This controller's primary model class name, the Inflector::classify()'ed version of the controller's $name property.
-
$modelKey
publicstring
This controller's model key name, an underscored version of the controller's $modelClass property. -
$modelNames
publicarray
An array containing the class names of the models this controller uses. -
$name
publicstring
The name of this controller. Controller names are plural, named after the model they manipulate. -
$output
publicstring
The output of the requested action. Contains either a variable returned from the action, or the data of the rendered view; You can use this var in child controllers' afterFilter() callbacks to alter output.
-
$paginate
publicarray
Holds pagination defaults for controller actions. The keys that can be included in this array are: 'conditions', 'fields', 'order', 'limit', 'page', and 'recursive', similar to the keys in the second parameter of Model::find().
-
$params
publicarray
Parameters received in the current request: GET and POST data, information about the request, etc.
-
$passedArgs
publicmixed
Holds all params passed and named. -
$persistModel
publicboolean
Used to create cached instances of models a controller uses. When set to true, all models related to the controller will be cached. This can increase performance in many cases.
-
$plugin
publicstring
Automatically set to the name of a plugin. -
$scaffold
publicmixed
Triggers Scaffolding -
$uses
publicmixed
An array containing the class names of models this controller uses. -
$validationErrors
publicarray
Holds any validation errors produced by the last call of the validateErrors() method/ -
$view
publicstring
The name of the View class this controller sends output to. -
$viewPath
publicstring
The name of the views subfolder containing views for this controller. -
$viewVars
publicarray
Contains variables to be handed to the view. -
$webroot
publicstring
The webroot of the application.
Method Summary
-
__construct() public
Constructor. -
__mergeVars() public
Merge components, helpers, and uses vars from AppController and PluginAppController. -
_afterScaffoldSave() public
This method should be overridden in child classes. -
_afterScaffoldSaveError() public
This method should be overridden in child classes. -
_beforeScaffold() public
This method should be overridden in child classes. -
_scaffoldError() public
This method should be overridden in child classes. If not it will render a scaffold error. Method MUST return true in child classes
-
afterFilter() public
Called after the controller action is run and rendered. -
beforeFilter() public
Called before the controller action. -
beforeRender() public
Called after the controller action is run, but before the view is rendered. -
constructClasses() public
Loads Model classes based on the uses property see Controller::loadModel(); for more info. Loads Components and prepares them for initialization.
-
disableCache() public
Forces the user's browser not to cache the results of the current request. -
flash() public
Shows a message to the user for $pause seconds, then redirects to $url. Uses flash.ctp as the default layout for the message. Does not work if the current debug level is higher than 0.
-
header() public
Convenience and object wrapper method for header(). Useful when doing tests and asserting that particular headers have been set.
-
httpCodes() public
Queries & sets valid HTTP response codes & messages. -
isAuthorized() public
Controller callback to tie into Auth component. Only called when AuthComponent::$authorize is set to 'controller'.
-
loadModel() public
Loads and instantiates models required by this controller. If Controller::$persistModel; is true, controller will cache model instances on first request, additional request will used cached models. If the model is non existent, it will throw a missing database table error, as Cake generates dynamic models for the time being.
-
paginate() public
Handles automatic pagination of model records. -
postConditions() public
Converts POST'ed form data to a model conditions array, suitable for use in a Model::find() call. -
redirect() public
Redirects to given $url, after turning off $this->autoRender. Script execution is halted after the redirect.
-
referer() public
Returns the referring URL for this request. -
render() public
Instantiates the correct view class, hands it its data, and uses it to render the view output. -
set() public
Saves a variable for use inside a view template. -
setAction() public
Internally redirects one action to another. Does not perform another HTTP request unlike Controller::redirect() -
shutdownProcess() public
Perform the various shutdown processes for this controller. Fire the Component and Controller callbacks in the correct order.
-
startupProcess() public
Perform the startup process for this controller. Fire the Component and Controller callbacks in the correct order.
-
validate() public
Returns number of errors in a submitted FORM. -
validateErrors() public
Validates models passed by parameters. Example:
Method Detail
__mergeVars() public ¶
__mergeVars( )
Merge components, helpers, and uses vars from AppController and PluginAppController.
_afterScaffoldSave() public ¶
_afterScaffoldSave( string $method )
This method should be overridden in child classes.
Parameters
- string $method
- name of method called either edit or update.
Returns
Success
Link
_afterScaffoldSaveError() public ¶
_afterScaffoldSaveError( string $method )
This method should be overridden in child classes.
Parameters
- string $method
- name of method called either edit or update.
Returns
Success
Link
_beforeScaffold() public ¶
_beforeScaffold( string $method )
This method should be overridden in child classes.
Parameters
- string $method
- name of method called example index, edit, etc.
Returns
Success
Link
_scaffoldError() public ¶
_scaffoldError( string $method )
This method should be overridden in child classes. If not it will render a scaffold error. Method MUST return true in child classes
Parameters
- string $method
- name of method called example index, edit, etc.
Returns
Success
Link
beforeRender() public ¶
beforeRender( )
Called after the controller action is run, but before the view is rendered.
Link
constructClasses() public ¶
constructClasses( )
Loads Model classes based on the uses property see Controller::loadModel(); for more info. Loads Components and prepares them for initialization.
Returns
true if models found and instance created, or cakeError if models not found.
See
Link
disableCache() public ¶
disableCache( )
Forces the user's browser not to cache the results of the current request.
Link
flash() public ¶
flash( string $message , mixed $url , integer $pause = 1 , string $layout = 'flash' )
Shows a message to the user for $pause seconds, then redirects to $url. Uses flash.ctp as the default layout for the message. Does not work if the current debug level is higher than 0.
Parameters
- string $message
- Message to display to the user
- mixed $url
- Relative string or array-based URL to redirect to after the time expires
- integer $pause optional 1
- Time to show the message
- string $layout optional 'flash'
- Layout you want to use, defaults to 'flash'
Returns
Renders flash layout
Link
header() public ¶
header( string $status )
Convenience and object wrapper method for header(). Useful when doing tests and asserting that particular headers have been set.
Parameters
- string $status
- The header message that is being set.
httpCodes() public ¶
httpCodes( mixed $code = null )
Queries & sets valid HTTP response codes & messages.
Parameters
- mixed $code optional null
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 'code' and 'message' keys of each nested array are added to the default HTTP codes. Example:
httpCodes(404); // returns array(404 => 'Not Found') httpCodes(array( 701 => 'Unicorn Moved', 800 => 'Unexpected Minotaur' )); // sets these new values, and returns true
Returns
Associative array of the HTTP codes as keys, and the message strings as values, or null of the given $code does not exist.
isAuthorized() public ¶
isAuthorized( )
Controller callback to tie into Auth component. Only called when AuthComponent::$authorize is set to 'controller'.
Returns
true if authorized, false otherwise
Link
loadModel() public ¶
loadModel( string $modelClass = null , mixed $id = null )
Loads and instantiates models required by this controller. If Controller::$persistModel; is true, controller will cache model instances on first request, additional request will used cached models. If the model is non existent, it will throw a missing database table error, as Cake generates dynamic models for the time being.
Parameters
- string $modelClass optional null
- Name of model class to load
- mixed $id optional null
- Initial ID the instanced model class should have
Returns
true when single model found and instance created, error returned if model not found.
paginate() public ¶
paginate( mixed $object = null , mixed $scope = array() , array $whitelist = array() )
Handles automatic pagination of model records.
Parameters
- mixed $object optional null
- Model to paginate (e.g: model instance, or 'Model', or 'Model.InnerModel')
- mixed $scope optional array()
- Conditions to use while paginating
- array $whitelist optional array()
- List of allowed options for paging
Returns
Model query results
Link
postConditions() public ¶
postConditions( array $data = array() , mixed $op = null , string $bool = 'AND' , boolean $exclusive = false )
Converts POST'ed form data to a model conditions array, suitable for use in a Model::find() call.
Parameters
- array $data optional array()
- POST'ed data organized by model and field
- mixed $op optional null
A string containing an SQL comparison operator, or an array matching operators to fields
- string $bool optional 'AND'
- SQL boolean operator: AND, OR, XOR, etc.
- boolean $exclusive optional false
If true, and $op is an array, fields not included in $op will not be included in the returned conditions
Returns
An array of model conditions
Link
redirect() public ¶
redirect( mixed $url , integer $status = null , boolean $exit = true )
Redirects to given $url, after turning off $this->autoRender. Script execution is halted after the redirect.
Parameters
- mixed $url
A string or array-based URL pointing to another location within the app, or an absolute URL
- integer $status optional null
- Optional HTTP status code (eg: 404)
- boolean $exit optional true
- If true, exit() will be called after the redirect
Returns
void if $exit = false. Terminates script if $exit = true
Link
referer() public ¶
referer( string $default = null , boolean $local = false )
Returns the referring URL for this request.
Parameters
- string $default optional null
- Default URL to use if HTTP_REFERER cannot be read from headers
- boolean $local optional false
- If true, restrict referring URLs to local server
Returns
Referring URL
Link
render() public ¶
render( string $action = null , string $layout = null , string $file = null )
Instantiates the correct view class, hands it its data, and uses it to render the view output.
Parameters
- string $action optional null
- Action name to render
- string $layout optional null
- Layout to use
- string $file optional null
- File to use for rendering
Returns
Full output string of view contents
Link
set() public ¶
set( mixed $one , mixed $two = null )
Saves a variable for use inside a view template.
Parameters
- mixed $one
- A string or an array of data.
- mixed $two optional null
Value in case $one is a string (which then works as the key). Unused if $one is an associative array, otherwise serves as the values to $one's keys.
Link
setAction() public ¶
setAction( string $action )
Internally redirects one action to another. Does not perform another HTTP request unlike Controller::redirect()
Examples:
{{{ setAction('another_action'); setAction('action_with_parameters', $parameter1); }}}
Parameters
- string $action
- The new action to be 'redirected' to
Returns
Returns the return value of the called action
shutdownProcess() public ¶
shutdownProcess( )
Perform the various shutdown processes for this controller. Fire the Component and Controller callbacks in the correct order.
- triggers the component
shutdown
callback. - calls the Controller's
afterFilter
method.
startupProcess() public ¶
startupProcess( )
Perform the startup process for this controller. Fire the Component and Controller callbacks in the correct order.
- Initializes components, which fires their
initialize
callback - Calls the controller
beforeFilter
. - triggers Component
startup
methods.
validate() public ¶
validate( )
Returns number of errors in a submitted FORM.
Returns
Number of errors
validateErrors() public ¶
validateErrors( )
Validates models passed by parameters. Example:
$errors = $this->validateErrors($this->Article, $this->User);
Returns
Validation errors, or false if none
Methods inherited from Object
Object() public ¶
Object( )
A hack to support __construct() on PHP 4 Hint: descendant classes have no PHP4 class_name() constructors, so this constructor gets called first and calls the top-layer __construct() which (if present) should call parent::__construct()
Returns
__openPersistent() public ¶
__openPersistent( string $name , string $type = null )
Open the persistent class file for reading Used by Object::_persist()
Parameters
- string $name
- Name of persisted class
- string $type optional null
- Type of persistance (e.g: registry)
_persist() public ¶
_persist( string $name , string $return , $object , $type = null )
Checks for a persistent class file, if found file is opened and true returned If file is not found a file is created and false returned If used in other locations of the model you should choose a unique name for the persistent file There are many uses for this method, see manual for examples
Parameters
- string $name
- name of the class to persist
- string $return
- $object the object to persist
- $object
- $type optional null
Returns
Success
_savePersistent() public ¶
_savePersistent( string $name , object $object )
You should choose a unique name for the persistent file
There are many uses for this method, see manual for examples
Parameters
- string $name
- name used for object to cache
- object $object
- the object to persist
Returns
true on save, throws error if file can not be created
_set() public ¶
_set( array $properties = array() )
Allows setting of multiple properties of the object in a single line of code. Will only set properties that are part of a class declaration.
Parameters
- array $properties optional array()
- An associative array containing properties and corresponding values.
_stop() public ¶
_stop( $status = 0 )
Stop execution of the current script. Wraps exit() making testing easier.
Parameters
- $status optional 0
- http://php.net/exit for values
cakeError() public ¶
cakeError( string $method , array $messages = array() )
Used to report user friendly errors. If there is a file app/error.php or app/app_error.php this file will be loaded error.php is the AppError class it should extend ErrorHandler class.
Parameters
- string $method
- Method to be called in the error class (AppError or ErrorHandler classes)
- array $messages optional array()
- Message that is to be displayed by the error class
Returns
message
dispatchMethod() public ¶
dispatchMethod( string $method , array $params = array() )
Calls a method on this object with the given parameters. Provides an OO wrapper
for call_user_func_array
Parameters
- string $method
- Name of the method to call
- array $params optional array()
- Parameter list to use when calling $method
Returns
Returns the result of the method call
log() public ¶
log( string $msg , integer $type = LOG_ERROR )
Convience method to write a message to CakeLog. See CakeLog::write() for more information on writing to logs.
Parameters
- string $msg
- Log message
- integer $type optional LOG_ERROR
- Error type constant. Defined in app/config/core.php.
Returns
Success of log write
requestAction() public ¶
requestAction( mixed $url , array $extra = array() )
Calls a controller's method from any location. Can be used to connect controllers together or tie plugins into a main application. requestAction can be used to return rendered views or fetch the return value from controller actions.
Parameters
- mixed $url
- String or array-based url.
- array $extra optional array()
- if array includes the key "return" it sets the AutoRender to true.
Returns
Boolean true or false on success/failure, or contents of rendered action if 'return' is set in $extra.
toString() public ¶
toString( )
Object-to-string conversion. Each class can override this method as necessary.
Returns
The name of this class
Properties detail
$__httpCodes ¶
Contains a list of the HTTP codes that CakePHP recognizes. These may be queried and/or modified through Controller::httpCodes(), which is also tasked with their lazy-loading.
null
$cacheAction ¶
Used to define methods a controller that will be cached. To cache a single action, the value is set to an array containing keys that match action names and values that denote cache expiration times (in seconds).
Example:
{{{ var $cacheAction = array( 'view/23/' => 21600, 'recalled/' => 86400 ); }}}
$cacheAction can also be set to a strtotime() compatible string. This marks all the actions in the controller for view caching.
Link
false
$components ¶
Array containing the names of components this controller uses. Component names should not contain the "Component" portion of the classname.
Example: var $components = array('Session', 'RequestHandler', 'Acl');
Link
array('Session')
$data ¶
Data POSTed to the controller using the HtmlHelper. Data here is accessible
using the $this->data['ModelName']['fieldName']
pattern.
array()
$ext ¶
File extension for view templates. Defaults to Cake's conventional ".ctp".
'.ctp'
$helpers ¶
An array containing the names of helpers this controller uses. The array elements should not contain the "Helper" part of the classname.
Example: var $helpers = array('Html', 'Javascript', 'Time', 'Ajax');
Link
array('Session', 'Html', 'Form')
$layout ¶
The name of the layout file to render the view inside of. The name specified is the filename of the layout in /app/views/layouts without the .ctp extension.
Link
'default'
$layoutPath ¶
The name of the layouts subfolder containing layouts for this controller.
null
$modelClass ¶
This controller's primary model class name, the Inflector::classify()'ed version of the controller's $name property.
Example: For a controller named 'Comments', the modelClass would be 'Comment'
null
$modelKey ¶
This controller's model key name, an underscored version of the controller's $modelClass property.
Example: For a controller named 'ArticleComments', the modelKey would be 'article_comment'
null
$modelNames ¶
An array containing the class names of the models this controller uses.
array()
$name ¶
The name of this controller. Controller names are plural, named after the model they manipulate.
Link
null
$output ¶
The output of the requested action. Contains either a variable returned from the action, or the data of the rendered view; You can use this var in child controllers' afterFilter() callbacks to alter output.
null
$paginate ¶
Holds pagination defaults for controller actions. The keys that can be included in this array are: 'conditions', 'fields', 'order', 'limit', 'page', and 'recursive', similar to the keys in the second parameter of Model::find().
Pagination defaults can also be supplied in a model-by-model basis by using the name of the model as a key for a pagination array:
{{{ var $paginate = array( 'Post' => array(...), 'Comment' => array(...) ); }}}
Link
array('limit' => 20, 'page' => 1)
$params ¶
Parameters received in the current request: GET and POST data, information about the request, etc.
Link
array()
$persistModel ¶
Used to create cached instances of models a controller uses. When set to true, all models related to the controller will be cached. This can increase performance in many cases.
false
$uses ¶
An array containing the class names of models this controller uses.
Example: var $uses = array('Product', 'Post', 'Comment');
Can be set to array() to use no models. Can be set to false to use no models and prevent the merging of $uses with AppController
Link
false
$validationErrors ¶
Holds any validation errors produced by the last call of the validateErrors() method/
null