28
A CakePHP cheat sheet (CakePHP reference page) Submitted by alvin on December 9, 2010 - 8:37pm tags: cakephp cheat sheet controller find logging model paginate php reference view A CakePHP cheat sheet: As I embark on another CakePHP project after a long hiatus, I'm trying to cram CakePHP back into my head. As part of this effort, I'm creating this large CakePHP cheat sheet (reference page), which I hope will be helpful to the CakePHP community. It is based on both the CakePHP cheat sheet on their Trac website and the CakePHP Cookbook (see the links below). (Go ahead and say what you will about me, but I happen to like all my CakePHP examples on one big page like this that I can search, rather than spread out across many different pages. That's what a cheat sheet is, right? Also, please note that there are very few ads on this page, besides the standard ads on the side columns.) CakePHP Default Directory Structure This is what the CakePHP directory structure looks like by default: /app app_controller.php app_model.php /config acl.ini.php bootstrap.php core.php

A CakePHP Referencia

Embed Size (px)

Citation preview

Page 1: A CakePHP Referencia

A CakePHP cheat sheet (CakePHP reference page)

Submitted by alvin on December 9, 2010 - 8:37pm

tags: 

cakephp

cheat sheet

controller

find

logging

model

paginate

php

reference

view

A CakePHP cheat sheet: As I embark on another CakePHP project after a long hiatus, I'm trying to

cram CakePHP back into my head. As part of this effort, I'm creating this large CakePHP cheat sheet

(reference page), which I hope will be helpful to the CakePHP community. It is based on both the

CakePHP cheat sheet on their Trac website and the CakePHP Cookbook (see the links below).

(Go ahead and say what you will about me, but I happen to like all my CakePHP examples on one

big page like this that I can search, rather than spread out across many different pages. That's what

a cheat sheet is, right? Also, please note that there are very few ads on this page, besides the

standard ads on the side columns.)

CakePHP Default Directory Structure

This is what the CakePHP directory structure looks like by default:

/app

app_controller.php

app_model.php

/config

acl.ini.php

bootstrap.php

core.php

databases.php

inflections.php

routes.php

/controllers

Page 2: A CakePHP Referencia

/components

your_components_here.php

your_controllers_here.php

/locale

/eng

/models

/behaviors

your_behaviors_here.php

your_models_here.php

/plugins

/tests

/cases

/behaviors

/components

/controllers

/helpers

/models

/fixtures

/groups

/tmp

/vendors

/views

/helpers

your_views_here.ctp

/webroot

/css

/files

/js

/cake

cake_core_files_are_in_here

/docs

release_notes_here

/vendors

CakePHP Naming Conventions

This is a list of the CakePHP naming conventions, specifically the CakePHP Model, View, and

Controller naming conventions.

CakePHP Models

Page 3: A CakePHP Referencia

class names are singular

class names UpperCamelCased

filenames use a lower-case underscored syntax

database tables are plural underscored

set var $name in your model definition (PHP4)

CakePHP Controllers

class names are plural

class names are UpperCamelCased for multi-word controllers

class names also end with 'Controller'

file names use a lower-case underscored syntax

file names also end with '_controller.php'.

CakePHP Views

views are in folders that match controller

view folders are plural underscored

views are named after actions they display.

name the view file after action name, in lowercase.

CakePHP naming conventions - Examples

Assuming we have a database table named orders, the following standard CakePHP naming

conventions should be used:

Model

filename = order.php

classname = Order

directory = app/models

View

filename = (same as the action name in the controller)

extension = .ctp (the filename extension)

directory = app/views/orders

Controller

filename = orders_controller.php

classname = OrdersController

directory = app/controllers

Page 4: A CakePHP Referencia

Assuming we have a database table named order_items, the following standard CakePHP naming

conventions should be used:

Model

filename = order_item.php

classname = OrderItem

directory = app/models

View

filename = (same as the action name in the controller)

extension = .ctp (the filename extension)

directory = app/views/order_items

Controller

filename = order_items_controller.php

classname = OrderItemsController

directory = app/controllers

CakePHP bake Command Examples

Here are some CakePHP bake examples (cake bake examples):

cake bake

cake bake controller

cake bake model

cake bake view

cake bake project

cake bake controller orders

cake bake model order

CakePHP Foreign Key Examples and Relationship Types

From the CakePHP Cookbook, there are four possible CakePHP relationship types:

Relationship Association Type Example

one to one hasOne A user has one

profile.

Page 5: A CakePHP Referencia

one to many hasMany A user can have

multiple recipes.

many to one belongsTo Many recipes belong to

a user.

many to many hasAndBelongsToMany Recipes have, and

belong to many tags.

Further details on these relationships can be found at the CakePHP Cookbook pages:

hasOne

belongsTo

hasMany

hasAndBelongsToMany

CakePHP relationship type examples:

# in a Post model class:

# each Post belongs to a User

var $belongsTo = array('User');

# TODO

var $hasOne ...

# in the User model

var $hasMany = array('Post');

# TODO

var $hasAndBelongsToMany

The CakePHP recursive attribute

The CakePHP recursive attribute affects how CakePHP retrieves data, in particular when there are

associations between database tables. (I normally indicate these associations with foreign key

relationships, but I've also seen applications not indicate foreign key relationships in the database,

but just deal with them in the software that is written.)

For instance, the CakePHP Cookbook includes an example of a blog database, and this database is

built upon in the excellent book, Beginning CakePHP . In this book, blog "posts" are associated with

"tags" and "users". As the author of the book explains, when a Post model runs a query that pulls

Page 6: A CakePHP Referencia

posts from the database, it will (may) also retrieve associated rows from the tags and users database

tables. This is where the CakePHP recursive attribute comes in:

The CakePHP recursive attribute tells the model how far to look when pulling associated rows.

The CakePHP recursive attribute can be set to the following integer values, with the following

meanings:

Value Meaning

-1 returns only the current model, and ignores all

associations.

0 returns the current model, plus its owner(s).

1 returns the current model, its owner(s), plus their

associated models.

2 returns the current model, its owner(s), their

associated models,

and the associated models of any associations.

In a simple controller index() method, the recursive attribute may be used like this:

function index()

{

$this->Post->recursive = 0;

$this->set('posts', $this->paginate);

}

TODO - add other recursive examples here

CakePHP find Conditions

One of the things you have to get used to when working with CakePHP is the CakePHP find method.

This is a collection of CakePHP find examples.

First, a list of possible CakePHP find query parameters:

Name Default Description

type 'first' can be 'all', 'first', or 'list'.

determines what type of

find operation to perform. (TODO - more

info here)

Page 7: A CakePHP Referencia

conditions null array containing the find (select)

conditions as

key/value pairs

fields null array specifying which fields should be

retrieved

in the resulting select query

order null sql 'order by conditions. field name

must be

followed by ASC or DESC

page null page number, used for paged data

limit null a limit on the number of results

returned, like

'select * from orders limit 20'.

offset null sql offset value (i haven't used this

query much

myself, but i think it refers to

skipping X

number of rows returned in a query)

recursive 1 the cakephp recursive value, relating to

associated

model data

Next, a very simple CakePHP find query that retrieves all records from the Post model (probably not

something you'll want to do in a production application):

$this->Post->find('all');

A CakePHP find query with one condition:

$this->Post->find('all',

array('conditions'=>array('User.id'=>5)));

A CakePHP find query with one "not equal to" condition:

Page 8: A CakePHP Referencia

$this->Post->find('all',

array('conditions'=>array('User.id'=>'<> 5')));

A CakePHP find query with multiple conditions:

# this is a little lame, but i'm trying to avoid dates

$this->Post->find('all',

array('conditions'=>array('User.id'=>1, 'Post.id'=>'> 50')));

A CakePHP find query that uses all the find function parameters:

# TODO - i'm not sure that this is right; i think 'fields' is

supposed to be an array

$this->Post->find('all',

array('conditions'=>array('User.id'=>5),

'fields'=>'Post.name',

'order'=>'Post.id ASC',

'limit'=>20,

'recursive'=>0));

A CakePHP find query using a date:

# note: you can search for date or datetime fields by

enclosing the table's field name

# in the SQL DATE() function.

$this->Post->find('all',

array('conditions'=>array('User.id'=>5,

'DATE(Post.date)'=>'CURDATE()')));

# TODO demonstrate "date >" and "date <" conditions

CakePHP find queries with ORDER BY examples:

array('order'=>'date ASC')

array('order'=>'date DESC')

array('order'=>'User.id DESC')

A collection of other CakePHP find query examples:

These CakePHP find examples are lines of code that would be

used in an OrderController class:

Page 9: A CakePHP Referencia

$this->Order->find('all');

$this->Order->find(null, null, 'date DESC');

$this->Order->find('all',

array('conditions'=>array('User.id'=>1)));

$this->Order->find('all',

array('conditions'=>array('User.id'=>array(1,2,3,4))));

$this->Order->find('all',

array('conditions'=>array('User.id'=>'<> 1')));

$this->Order->find('all',

array('conditions'=>array('User.id'=>1,

'DATE(Post.date)'=>'CURDATE()')));

$this->Order->find('all', array('order'=>'date ASC',

'limit'=>20, 'recursive'=>0);

Here are some CakePHP find examples from the CakePHP retrieving your data book page:

$params can contain all these:

array(

'conditions' => array('Model.field' => $thisValue), //array

of conditions

'recursive' => 1, //int

'fields' => array('Model.field1', 'DISTINCT Model.field2'),

//array of field names

'order' => array('Model.created', 'Model.field3 DESC'),

//string or array defining order

'group' => array('Model.field'), //fields to GROUP BY

'limit' => n, //int

'page' => n, //int

'offset'=>n, //int

'callbacks' => true //other possible values are false,

'before', 'after'

)

Here's a CakePHP function showing several different CakePHP find examples:

# find('first', $params) syntax

function some_function() {

...

Page 10: A CakePHP Referencia

$this->Article->order = null; // resetting if it's set

$semiRandomArticle = $this->Article->find();

$this->Article->order = 'Article.created DESC'; //

simulating the model having a default order

$lastCreated = $this->Article->find();

$alsoLastCreated = $this->Article->find('first',

array('order' => array('Article.created DESC')));

$specificallyThisOne = $this->Article->find('first',

array('conditions' => array('Article.id' => 1)));

...

}

Here's a CakePHP find count example:

# find('count', $params)

function some_function() {

...

$total = $this->Article->find('count');

$pending = $this->Article->find('count',

array('conditions' => array('Article.status' => 'pending')));

$authors = $this->Article->User->find('count');

$publishedAuthors = $this->Article->find('count', array(

'fields' => 'DISTINCT Article.user_id',

'conditions' => array('Article.status !=' => 'pending')

));

...

}

Some CakePHP find all examples:

# find('all', $params) syntax

function some_function() {

...

$allArticles = $this->Article->find('all');

$pending = $this->Article->find('all', array('conditions'

=> array('Article.status' => 'pending')));

$allAuthors = $this->Article->User->find('all');

Page 11: A CakePHP Referencia

$allPublishedAuthors = $this->Article->User->find('all',

array('conditions' => array('Article.status !=' =>

'pending')));

...

}

CakePHP find list examples, useful for creating select boxes:

# find('list', $params) syntax

function some_function() {

...

$allArticles = $this->Article->find('list');

$pending = $this->Article->find('list', array(

'conditions' => array('Article.status' => 'pending')

));

$allAuthors = $this->Article->User->find('list');

$allPublishedAuthors = $this->Article->find('list',

array(

'fields' => array('User.id', 'User.name'),

'conditions' => array('Article.status !=' =>

'pending'),

'recursive' => 0

));

...

}

See the CakePHP retrieving your data book page for many more CakePHP find examples, including:

find threaded

find neighbors

findAllBy

findBy

query

field

read

More complex CakePHP find examples

CakePHP paginate Examples

Page 12: A CakePHP Referencia

Another important CakePHP method to know is the CakePHP paginate method. Here is a collection

of CakePHP paginate examples.

A basic CakePHP paginate method in a controller:

function index() {

$this->Order->recursive = 0;

$this->set('orders', $this->paginate());

}

You can also control CakePHP pagination with the CakePHP paginate variable in your CakePHP

controllers, like this:

class RecipesController extends AppController {

var $paginate = array(

'limit' => 25,

'order' => array(

'Post.title' => 'asc'

)

);

}

or this:

class RecipesController extends AppController {

var $paginate = array(

'fields' => array('Post.id', 'Post.created'),

'limit' => 25,

'order' => array(

'Post.title' => 'asc'

)

);

}

For more information on CakePHP pagination, see the CakePHP pagination book page.

CakePHP logging

You can write to CakePHP log files using the CakeLog::write method:

Page 13: A CakePHP Referencia

CakeLog::write('debug', 'Something did not work');

Or you can use the CakePHP log function in any class that extends the CakePHP Object class:

$this->log("Something did not work!", 'debug');

You can also perform CakePHP error logging like this:

Configure::write('log', E_WARNING);

CakePHP Global Methods

These are names of some globally available CakePHP methods (assuming you extend the

CakePHP Object class):

config

uses

vendor

debug - use like <? debug($order); ?> in a view

a

aa

am

e - shortcut for echo()

env

ife

low

up

r

pr - shortcut for print_r()

stripslashes_deep

CakePHP Global Constants

This is a list of CakePHP global constants. (I don't know much about these yet.)

ACL_CLASSNAME

ACL_FILENAME

APP

APP_DIR

APP_PATH

AUTO_SESSION

CACHE

Page 14: A CakePHP Referencia

CACHE_CHECK

CAKE

CAKE_CORE_INCLUDE_PATH

CAKE_SECURITY

CAKE_SESSION_COOKIE

CAKE_SESSION_SAVE

CAKE_SESSION_STRING

CAKE_SESSION_TABLE

CAKE_SESSION_TIMEOUT

COMPONENTS

COMPRESS_CSS

CONFIGS

CONTROLLER_TESTS

CONTROLLERS

CORE_PATH

CSS

DATASOURCE

DAY

DEBUG

DS

ELEMENTS

HELPER_TESTS

HELPERS

HOUR

INFLECTIONS

JS

LAYOUTS

LIB_TESTS

LIBS

LOG_ERROR

LOGS

MAX_MD5SIZE

MINUTE

MODEL_TESTS

MODELS

MODULES

MONTH

ROOT

Page 15: A CakePHP Referencia

SCRIPTS

SECOND

TAG_DIV

TAG_FIELDSET

TAG_LABEL

TAG_P_CLASS

TESTS

TMP

VENDORS

VIEWS

WEBROOT_DIR

WEBSERVICES

WEEK

WWW_ROOT

YEAR

CakePHP Controller properties, methods, callbacks

CakePHP controller properties:

$name = null

$action = null

$autoLayout = true

$autoRender = true

$base = null

$beforeFilter = null

$cacheAction = false

$components = array()

$data = array()

$helpers = array('Html')

$here = null

$layout = 'default'

$output = null

$pageTitle = false

$params = array()

$persistModel = false

$plugin = null

$uses = false

$view = 'View'

$viewPath = null

Page 16: A CakePHP Referencia

$webroot = null

$_viewClass = null

$_viewVars = array()

CakePHP controller methods

cleanUpFields ()

constructClasses ()

flash ($message, $url, $pause = 1)

flashOut ($message, $url, $pause = 1)

generateFieldNames ($data = null, $doCreateOptions = true)

postConditions ($data, $operator = '', $bool = 'AND',

$exclusive = false)

redirect ($url, $status = null)

referer ($default = null, $local = false)

render ($action = null, $layout = null, $file = null)

set ($one, $two = null)

setAction ($action)

validate ()

validateErrors ()

CakePHP controller callbacks

afterFilter ()

beforeFilter ()

beforeRender ()

CakePHP Model properties, methods, callbacks, and validation

CakePHP Model properties:

$belongsTo = array()

$cacheQueries = true

$data = array()

$displayField = null

$hasAndBelongsToMany = array()

$hasMany = array()

$hasOne = array()

$id = false

$logTransactions = false

Page 17: A CakePHP Referencia

$name = null

$primaryKey = null

$recursive = 1

$useDbConfig = 'default'

$useTable = null

$validate = array()

$validationErrors = array()

CakePHP Model methods:

bindModel ($params)

create ()

delete ($id = null, $cascade = true)

escapeField ($field)

execute ($data)

exists ()

field ($name, $conditions = null, $order = null)

find ($conditions = null, $fields = null, $order = null,

$recursive = null)

findAll ($conditions = null, $fields = null, $order = null,

$limit = null, $page = 1, $recursive = null)

findAllThreaded ($conditions = null, $fields = null, $sort =

null)

findCount ($conditions = null, $recursive = 0)

findNeighbours ($conditions = null, $field, $value)

generateList ($conditions = null, $order = null, $limit =

null, $keyPath = null, $valuePath = null)

getAffectedRows ()

getColumnType ($column)

getColumnTypes ()

getDisplayField ()

getID ($list=0)

getLastInsertID ()

getNumRows ()

hasAny ($conditions = null)

hasField ($name)

invalidate ($field)

invalidFields ($data = array())

isForeignKey ($field)

Page 18: A CakePHP Referencia

loadInfo ()

query ()

read ($fields = null, $id = null)

remove ($id = null, $cascade = true)

save ($data = null, $validate = true, $fieldList = array())

saveField ($name, $value, $validate = false)

set ($one, $two = null)

setDataSource ($dataSource = null)

setSource ($tableName)

unbindModel ($params)

validates ($data=array())

setSource ($tableName)

CakePHP Model callbacks

afterDelete ()

afterFind ($results)

afterSave ()

beforeDelete ()

beforeFind (&$queryData)

beforeSave ()

beforeValidate ()

CakePHP Model validation

'VALID_EMAIL`

'VALID_NOT_EMPTY`

'VALID_NUMBER`

'VALID_YEAR`

CakePHP View properties and methods

CakePHP View properties

$action = null

$autoLayout = true

$autoRender = true

$base = null

$controller = null

$ext = '.thtml'

$hasRendered = null

Page 19: A CakePHP Referencia

$helpers = array('Html')

$here = null

$layout = 'default'

$loaded = array()

$models = array()

$name = null

$pageTitle = false

$params

$parent = null

$plugin = null

$subDir = null

$themeWeb = null

$uses = false

$viewPath

CakePHP View methods

element ($name)

error ($code, $name, $message)

pluginView ($action, $layout)

render ($action = null, $layout = null, $file = null)

renderCache ($filename, $timeStart)

renderElement ($name, $params = array())

renderLayout ($content_for_layout)

setLayout ($layout)

CakePHP Data Validation

Here are some CakePHP data validation examples, mostly from the CakePHP Data Validation book

page:

<?php

class User extends AppModel {

var $name = 'User';

var $validate = array(

'login' => 'alphaNumeric',

'email' => 'email',

'born' => 'date'

);

}

Page 20: A CakePHP Referencia

?>

CakePHP Helpers

CakePHP Html Helper

addCrumb ($name, $link)

charset ($charset, $return = false)

checkbox ($fieldName, $title = null, $htmlAttributes = null,

$return = false)

css ($path, $rel = 'stylesheet', $htmlAttributes = null,

$return = false)

dateTimeOptionTag ($tagName, $dateFormat = 'DMY', $timeFormat

= '12', $selected = null, $selectAttr = null, $optionAttr =

null, $showEmpty = true)

dayOptionTag ($tagName, $value = null, $selected = null,

$selectAttr = null, $optionAttr = null, $showEmpty = true)

file ($fieldName, $htmlAttributes = null, $return = false)

formTag ($target = null, $type = 'post', $htmlAttributes =

null)

getCrumbs ($separator = '»', $startText = false, $return =

false)

guiListTree ($data, $htmlAttributes = null, $bodyKey =

'body', $childrenKey = 'children', $return = false)

hidden ($fieldName, $htmlAttributes = null, $return = false)

hourOptionTag ($tagName, $value = null, $format24Hours =

false, $selected = null, $selectAttr = null, $optionAttr =

null, $showEmpty = true)

image ($path, $htmlAttributes = null, $return = false)

input ($fieldName, $htmlAttributes = null, $return = false)

link ($title, $url = null, $htmlAttributes = null,

$confirmMessage = false, $escapeTitle = true, $return =

false)

linkEmail ($title, $email = null, $options = null)

meridianOptionTag ($tagName, $value = null, $selected = null,

$selectAttr = null, $optionAttr = null, $showEmpty = true)

minuteOptionTag ($tagName, $value = null, $selected = null,

$selectAttr = null, $optionAttr = null, $showEmpty = true)

monthOptionTag ($tagName, $value = null, $selected = null,

$selectAttr = null, $optionAttr = null, $showEmpty = true)

Page 21: A CakePHP Referencia

parseHtmlOptions ($options, $exclude = null, $insertBefore =

' ', $insertAfter = null)

password ($fieldName, $htmlAttributes = null, $return =

false)

radio ($fieldName, $options, $inbetween = null,

$htmlAttributes = array(), $return = false)

selectTag ($fieldName, $optionElements, $selected = null,

$selectAttr = null, $optionAttr = null, $showEmpty = true,

$return = false)

setFormTag ($tagValue)

submit ($caption = 'Submit', $htmlAttributes = null, $return

= false)

tableCells ($data, $oddTrOptions = null, $evenTrOptions =

null, $return = false)

tableHeaders ($names, $trOptions = null, $thOptions = null,

$return = false)

tagErrorMsg ($field, $text)

tagIsInvalid ($model, $field)

tagValue ($fieldName)

textarea ($fieldName, $htmlAttributes = null, $return =

false)

trim ()

url ($url = null, $return = false)

validate ()

validateErrors ()

yearOptionTag ($tagName, $value = null, $minYear = null,

$maxYear = null, $selected = null, $selectAttr = null,

$optionAttr = null, $showEmpty = true)

_parseAttributes ($options, $exclude = null, $insertBefore =

' ', $insertAfter = null)

CakePHP Form Helper

button ($params, $type= 'button', $options=array())

create ($model=null, $options=array())

dateTime ($tagName, $dateFormat= 'DMY', $timeFormat= '12',

$selected=null, $attributes=array(), $showEmpty=true)

day ($fieldName, $selected=null, $attributes=array(),

$showEmpty=true)

Page 22: A CakePHP Referencia

end ($options=null)

error ($field, $text=null, $options=array())

file ($fieldName, $options=array())

hidden ($fieldName, $options=array())

hour ($tagName, $format24Hours=false, $selected=null,

$attributes=array(), $showEmpty=true)

input ($tagName, $options=array())

inputs ($fields=null, $blacklist=null)

isFieldError ($field)

label ($tagName=null, $text=null, $attributes=array())

meridian ($tagName, $selected=null, $attributes=array(),

$showEmpty=true)

minute ($tagName, $selected=null, $attributes=array(),

$showEmpty=true)

month ($tagName, $selected=null, $attributes=array(),

$showEmpty=true)

password ($fieldName, $options=array())

secure ($fields)

select ($fieldName, $options=array(), $selected=null,

$attributes=array(), $showEmpty= '')

submit ($caption= 'Submit', $options=array())

submitImage ($path, $options=array())

text ($fieldName, $options=array())

textarea ($fieldName, $options=array())

year ($fieldName, $minYear=null, $maxYear=null,

$selected=null, $attributes=array(), $showEmpty=true)

CakePHP Ajax Helper

autoComplete ($field, $url="", $options=array())

div ($id, $options=array())

divEnd ($id)

drag ($id, $options=array())

drop ($id, $options=array())

dropRemote ($id, $options=array(), $ajaxOptions=array())

editor ($id, $url, $options=array())

form ($params=null, $type= 'post', $options=array())

isAjax ()

Page 23: A CakePHP Referencia

link ($title, $href=null, $options=array(), $confirm=null,

$escapeTitle=true)

observeField ($field_id, $options=array())

observeForm ($field_id, $options=array())

remoteFunction ($options=null)

remoteTimer ($options=null)

slider ($id, $track_id, $options=array())

sortable ($id, $options=array())

submit ($title= 'Submit', $options=array())

CakePHP Text Helper

highlight ($text, $phrase, $highlighter= '< span

class="highlight">\1</span >')

stripLinks ($text)

autoLinkUrls ($text, $htmlOptions = array())

autoLinkEmails ($text, $htmlOptions = array())

autoLink ($text, $htmlOptions = array())

truncate ($text, $length, $ending = '...', $exact = true)

trim ()

excerpt ($text, $phrase, $radius = 100, $ending = "...")

flay ($text, $allowHtml = false)

CakePHP Time Helper

dayAsSql ($date_string, $field_name, $return = false)

daysAsSql ($begin, $end, $field_name, $return = false)

fromString ($date_string)

isThisYear ($date_string, $return = false)

isToday ($date_string, $return = false)

isTomorrow ($date_string, $return = false)

nice ($date_string=null, $return = false)

niceShort ($date_string=null, $return = false)

relativeTime ($datetime_string, $format = 'j/n/y', $return =

false)

timeAgoInWords ($datetime_string, $format = 'j/n/y',

$backwards = false, $return = false)

toAtom ($date_string, $return = false)

toRSS ($date_string, $return = false)

toUnix ($date_string, $return = false)

Page 24: A CakePHP Referencia

trim ($string, $length, $ending = '..')

wasWithinLast ($timeInterval, $date_string, $return = false)

wasYesterday ($date_string, $return = false)

CakePHP Number Helper

precision ($number, $precision = 3)

toReadableSize ($size)

toPercentage ($number, $precision = 2)

CakePHP Components

CakePHP Session Component

check ($name)

del ($name)

delete ($name)

error ()

flash ($key)

read ($name)

renew ()

setFlash ($flashMessage, $layout = 'default', $param = null,

$key = 'flash')

valid ()

write($name, $value)

CakePHP RequestHandler Component

accepts ($types)

getAjaxVersion ()

getClientIP ()

getReferer ()

isAjax ()

isAtom ()

isDelete ()

isGet ()

isMobile ()

isPost ()

isPut ()

isRss ()

isXml ()

Page 25: A CakePHP Referencia

setContent ($name, $type)

stripAll ($string)

stripImages ($string)

stripScripts ($string)

CakePHP Security Component

requirePost ([$action1, $ action2, $action3, ...])

requireAuth ([$action1, $ action2, $action3, ...])

CakePHP ACL Component

check ($aro, $aco, $action="*")

allow ($aro, $aco, $action="*")

deny ($aro, $aco, $action="*")

inherit ($aro, $aco, $action="*")

grant ($aro, $aco, $action="*")

revoke ($aro, $aco, $action="*")

getAro ($id)

getAco ($id)

CakePHP SQL Debug

To add CakePHP SQL debug output in CakePHP 1.3, change the CakePHP debug config parameter

to '2' in this line of the $app/config/core.php file:

Configure::write('debug', 2);

Then add this line to the bottom of your CakePHP view page:

echo $this->element('sql_dump');

Other CakePHP tutorials

For deeper problems, I've created some other CakePHP tutorials:

Setting the CakePHP page title

CakePHP MVC naming conventions

CakePHP error logging

CakePHP SQL query examples

A CakePHP find all limit and order by example

A CakePHP debug strategy

A CakePHP SELECT DISTINCT example

Page 26: A CakePHP Referencia

A CakePHP SELECT BETWEEN date example

CakePHP API Documentation

Links to some of the most important (common) CakePHP classes:

The CakePHP API docs (main page)

CakePHP Model class

CakePHP Model::find

CakePHP Controller class

CakePHP String class

CakePHP Validation class

CakePHP AuthComponent

NumberHelper

TimeHelper

CakePHP - TODO Items

This is a list of more things I want to add to this CakePHP cheat sheet:

Auth information

AppController

var $helpers = array('Html', 'Form', 'Ajax', 'Javascript');  // in AppController or other

controllers

More find queries

read()

save()

Date, time, calendar, currency

setFlash

redirect

Validation

$tags = $this->Post->Tag->find('list');

$users = $this->Post->User->find('list');

$tags = $this->compact(...)

CakePHP support URLs

Here is a list of CakePHP support URLs:

The main CakePHP website (cakephp.org)

The CakePHP Bakery

Page 27: A CakePHP Referencia

The CakePHP Cookbook

CakePHP open source projects (cakeforge.org)

CakePHP Trac website (support, bugs)

CakePHP IRC

CakePHP Google discussion group

This page is sponsored by Valley Programming - Alaska PHP computer programming services

want to sponsor a page? learn more.

CakePHP cheat sheet (reference page) - Summary

I hope this CakePHP cheat sheet has been helpful. As mentioned, it is very heavily based on the

CakePHP reference page, which can be found at the CakePHP Trac website. Some of the examples

also come from the excellent Beginning CakePHP book from apress ('author'=>'David Golding').

(FWIW, yes, I feel guilty about copying their CakePHP cheat sheet content, but I hope to vastly

improve on it over time as I continue to develop my own CakePHP applications. I really like my cheat

sheets to have a lot of examples I can easily reference, which is something I think their CakePHP

cheat sheet is lacking.)