Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

1 lines (1 sloc) 87.986 kb
[{"title":"1 Beginning With CakePHP","href":"http://book.cakephp.org/view/879/Beginning-With-CakePHP","scanned":false,"children":[{"title":"1.1 What is CakePHP? Why Use it?","href":"http://book.cakephp.org/view/880/What-is-CakePHP-Why-Use-it","scanned":false,"children":[]},{"title":"1.2 Where to Get Help","href":"http://book.cakephp.org/view/881/Where-to-Get-Help","scanned":false,"children":[]},{"title":"1.3 Understanding Model-View-Controller","href":"http://book.cakephp.org/view/890/Understanding-Model-View-Controller","scanned":false,"children":[]}]},{"title":"2 Basic Principles of CakePHP","href":"http://book.cakephp.org/view/892/Basic-Principles-of-CakePHP","scanned":false,"children":[{"title":"2.1 CakePHP Structure","href":"http://book.cakephp.org/view/893/CakePHP-Structure","scanned":false,"children":[{"title":"2.1.1 Controller Extensions (\"Components\")","href":"http://book.cakephp.org/view/894/Controller-Extensions-Components","scanned":false,"children":[]},{"title":"2.1.2 View Extensions (\"Helpers\")","href":"http://book.cakephp.org/view/895/View-Extensions-Helpers","scanned":false,"children":[]},{"title":"2.1.3 Model Extensions (\"Behaviors\")","href":"http://book.cakephp.org/view/896/Model-Extensions-Behaviors","scanned":false,"children":[]},{"title":"2.1.4 Application Extensions","href":"http://book.cakephp.org/view/897/Application-Extensions","scanned":false,"children":[]}]},{"title":"2.2 A Typical CakePHP Request","href":"http://book.cakephp.org/view/898/A-Typical-CakePHP-Request","scanned":false,"children":[]},{"title":"2.3 CakePHP Folder Structure","href":"http://book.cakephp.org/view/899/CakePHP-Folder-Structure","scanned":false,"children":[]},{"title":"2.4 CakePHP Conventions","href":"http://book.cakephp.org/view/901/CakePHP-Conventions","scanned":false,"children":[{"title":"2.4.1 File and Classname Conventions","href":"http://book.cakephp.org/view/902/File-and-Classname-Conventions","scanned":false,"children":[]},{"title":"2.4.2 Model and Database Conventions","href":"http://book.cakephp.org/view/903/Model-and-Database-Conventions","scanned":false,"children":[]},{"title":"2.4.3 Controller Conventions","href":"http://book.cakephp.org/view/904/Controller-Conventions","scanned":false,"children":[{"title":"2.4.3.1 URL Considerations for Controller Names","href":"http://book.cakephp.org/view/905/URL-Considerations-for-Controller-Names","scanned":false,"children":[]}]},{"title":"2.4.4 View Conventions","href":"http://book.cakephp.org/view/906/View-Conventions","scanned":false,"children":[]}]}]},{"title":"3 Developing with CakePHP","href":"http://book.cakephp.org/view/907/Developing-with-CakePHP","scanned":false,"children":[{"title":"3.1 Requirements","href":"http://book.cakephp.org/view/908/Requirements","scanned":false,"children":[]},{"title":"3.2 Installation Preparation","href":"http://book.cakephp.org/view/909/Installation-Preparation","scanned":false,"children":[{"title":"3.2.1 Getting CakePHP","href":"http://book.cakephp.org/view/910/Getting-CakePHP","scanned":false,"children":[]},{"title":"3.2.2 Permissions","href":"http://book.cakephp.org/view/911/Permissions","scanned":false,"children":[]}]},{"title":"3.3 Installation","href":"http://book.cakephp.org/view/912/Installation","scanned":false,"children":[{"title":"3.3.1 Development","href":"http://book.cakephp.org/view/913/Development","scanned":false,"children":[]},{"title":"3.3.2 Production","href":"http://book.cakephp.org/view/914/Production","scanned":false,"children":[]},{"title":"3.3.3 Advanced Installation","href":"http://book.cakephp.org/view/915/Advanced-Installation","scanned":false,"children":[{"title":"3.3.3.1 Additional Class Paths","href":"http://book.cakephp.org/view/916/Additional-Class-Paths","scanned":false,"children":[]}]},{"title":"3.3.4 Apache and mod_rewrite (and .htaccess)","href":"http://book.cakephp.org/view/917/Apache-and-mod_rewrite-and-htaccess","scanned":false,"children":[]},{"title":"3.3.5 Pretty URLs and Lighttpd","href":"http://book.cakephp.org/view/918/Pretty-URLs-and-Lighttpd","scanned":false,"children":[]},{"title":"3.3.6 Pretty URLs on nginx","href":"http://book.cakephp.org/view/919/Pretty-URLs-on-nginx","scanned":false,"children":[]},{"title":"3.3.7 URL Rewrites on IIS7 (Windows hosts)","href":"http://book.cakephp.org/view/1636/URL-Rewrites-on-IIS7-Windows-hosts","scanned":false,"children":[]},{"title":"3.3.8 Fire It Up","href":"http://book.cakephp.org/view/920/Fire-It-Up","scanned":false,"children":[]}]},{"title":"3.4 Configuration","href":"http://book.cakephp.org/view/921/Configuration","scanned":false,"children":[{"title":"3.4.1 Database Configuration","href":"http://book.cakephp.org/view/922/Database-Configuration","scanned":false,"children":[]},{"title":"3.4.2 Core Configuration","href":"http://book.cakephp.org/view/923/Core-Configuration","scanned":false,"children":[]},{"title":"3.4.3 The Configuration Class","href":"http://book.cakephp.org/view/924/The-Configuration-Class","scanned":false,"children":[{"title":"3.4.3.1 Configure Methods","href":"http://book.cakephp.org/view/925/Configure-Methods","scanned":false,"children":[{"title":"3.4.3.1.1 write","href":"http://book.cakephp.org/view/926/write","scanned":false,"children":[]},{"title":"3.4.3.1.2 read","href":"http://book.cakephp.org/view/927/read","scanned":false,"children":[]},{"title":"3.4.3.1.3 delete","href":"http://book.cakephp.org/view/928/delete","scanned":false,"children":[]},{"title":"3.4.3.1.4 load","href":"http://book.cakephp.org/view/929/load","scanned":false,"children":[]},{"title":"3.4.3.1.5 version","href":"http://book.cakephp.org/view/930/version","scanned":false,"children":[]}]},{"title":"3.4.3.2 CakePHP Core Configuration Variables","href":"http://book.cakephp.org/view/931/CakePHP-Core-Configuration-Variables","scanned":false,"children":[]},{"title":"3.4.3.3 Configuration Constants","href":"http://book.cakephp.org/view/932/Configuration-Constants","scanned":false,"children":[]}]},{"title":"3.4.4 The App Class","href":"http://book.cakephp.org/view/933/The-App-Class","scanned":false,"children":[{"title":"3.4.4.1 Using App::import()","href":"http://book.cakephp.org/view/934/Using-App-import","scanned":false,"children":[]},{"title":"3.4.4.2 Importing Core Libs","href":"http://book.cakephp.org/view/935/Importing-Core-Libs","scanned":false,"children":[]},{"title":"3.4.4.3 Importing Controllers, Models, Components, Behaviors, and Helpers","href":"http://book.cakephp.org/view/936/Importing-Controllers-Models-Components-Behaviors-","scanned":false,"children":[{"title":"3.4.4.3.1 Loading Controllers","href":"http://book.cakephp.org/view/937/Loading-Controllers","scanned":false,"children":[]},{"title":"3.4.4.3.2 Loading Models","href":"http://book.cakephp.org/view/938/Loading-Models","scanned":false,"children":[]},{"title":"3.4.4.3.3 Loading Components","href":"http://book.cakephp.org/view/939/Loading-Components","scanned":false,"children":[]},{"title":"3.4.4.3.4 Loading Behaviors","href":"http://book.cakephp.org/view/940/Loading-Behaviors","scanned":false,"children":[]},{"title":"3.4.4.3.5 Loading Helpers","href":"http://book.cakephp.org/view/941/Loading-Helpers","scanned":false,"children":[]}]},{"title":"3.4.4.4 Loading from Plugins","href":"http://book.cakephp.org/view/942/Loading-from-Plugins","scanned":false,"children":[]},{"title":"3.4.4.5 Loading Vendor Files","href":"http://book.cakephp.org/view/943/Loading-Vendor-Files","scanned":false,"children":[{"title":"3.4.4.5.1 Vendor examples","href":"http://book.cakephp.org/view/944/Vendor-examples","scanned":false,"children":[]}]}]},{"title":"3.4.5 Routes Configuration","href":"http://book.cakephp.org/view/945/Routes-Configuration","scanned":false,"children":[{"title":"3.4.5.1 Default Routing","href":"http://book.cakephp.org/view/946/Default-Routing","scanned":false,"children":[]},{"title":"3.4.5.2 Passed arguments","href":"http://book.cakephp.org/view/1627/Passed-arguments","scanned":false,"children":[]},{"title":"3.4.5.3 Named parameters","href":"http://book.cakephp.org/view/947/Named-parameters","scanned":false,"children":[]},{"title":"3.4.5.4 Defining Routes","href":"http://book.cakephp.org/view/948/Defining-Routes","scanned":false,"children":[]},{"title":"3.4.5.5 Passing parameters to action","href":"http://book.cakephp.org/view/949/Passing-parameters-to-action","scanned":false,"children":[]},{"title":"3.4.5.6 Prefix Routing","href":"http://book.cakephp.org/view/950/Prefix-Routing","scanned":false,"children":[]},{"title":"3.4.5.7 Plugin routing","href":"http://book.cakephp.org/view/951/Plugin-routing","scanned":false,"children":[]},{"title":"3.4.5.8 File extensions","href":"http://book.cakephp.org/view/952/File-extensions","scanned":false,"children":[]},{"title":"3.4.5.9 Custom Route classes","href":"http://book.cakephp.org/view/1634/Custom-Route-classes","scanned":false,"children":[]}]},{"title":"3.4.6 Inflections","href":"http://book.cakephp.org/view/953/Inflections","scanned":false,"children":[]},{"title":"3.4.7 Bootstrapping CakePHP","href":"http://book.cakephp.org/view/954/Bootstrapping-CakePHP","scanned":false,"children":[]}]},{"title":"3.5 Controllers","href":"http://book.cakephp.org/view/955/Controllers","scanned":false,"children":[{"title":"3.5.1 The App Controller","href":"http://book.cakephp.org/view/957/The-App-Controller","scanned":false,"children":[]},{"title":"3.5.2 The Pages Controller","href":"http://book.cakephp.org/view/958/The-Pages-Controller","scanned":false,"children":[]},{"title":"3.5.3 Controller Attributes","href":"http://book.cakephp.org/view/959/Controller-Attributes","scanned":false,"children":[{"title":"3.5.3.1 $name","href":"http://book.cakephp.org/view/960/name","scanned":false,"children":[]},{"title":"3.5.3.2 $components, $helpers and $uses","href":"http://book.cakephp.org/view/961/components-helpers-and-uses","scanned":false,"children":[]},{"title":"3.5.3.3 Page-related Attribute: $layout","href":"http://book.cakephp.org/view/962/Page-related-Attribute-layout","scanned":false,"children":[]},{"title":"3.5.3.4 The Parameters Attribute ($params)","href":"http://book.cakephp.org/view/963/The-Parameters-Attribute-params","scanned":false,"children":[{"title":"3.5.3.4.1 form","href":"http://book.cakephp.org/view/964/form","scanned":false,"children":[]},{"title":"3.5.3.4.2 admin","href":"http://book.cakephp.org/view/965/admin","scanned":false,"children":[]},{"title":"3.5.3.4.3 bare","href":"http://book.cakephp.org/view/966/bare","scanned":false,"children":[]},{"title":"3.5.3.4.4 isAjax","href":"http://book.cakephp.org/view/967/isAjax","scanned":false,"children":[]},{"title":"3.5.3.4.5 controller","href":"http://book.cakephp.org/view/968/controller","scanned":false,"children":[]},{"title":"3.5.3.4.6 action","href":"http://book.cakephp.org/view/969/action","scanned":false,"children":[]},{"title":"3.5.3.4.7 pass","href":"http://book.cakephp.org/view/970/pass","scanned":false,"children":[]},{"title":"3.5.3.4.8 url","href":"http://book.cakephp.org/view/971/url","scanned":false,"children":[]},{"title":"3.5.3.4.9 data","href":"http://book.cakephp.org/view/972/data","scanned":false,"children":[]},{"title":"3.5.3.4.10 prefix","href":"http://book.cakephp.org/view/973/prefix","scanned":false,"children":[]},{"title":"3.5.3.4.11 named","href":"http://book.cakephp.org/view/974/named","scanned":false,"children":[]}]},{"title":"3.5.3.5 Other Attributes","href":"http://book.cakephp.org/view/975/Other-Attributes","scanned":false,"children":[]},{"title":"3.5.3.6 persistModel","href":"http://book.cakephp.org/view/976/persistModel","scanned":false,"children":[]}]},{"title":"3.5.4 Controller Methods","href":"http://book.cakephp.org/view/977/Controller-Methods","scanned":false,"children":[{"title":"3.5.4.1 Interacting with Views","href":"http://book.cakephp.org/view/978/Interacting-with-Views","scanned":false,"children":[]},{"title":"3.5.4.2 Flow Control","href":"http://book.cakephp.org/view/981/Flow-Control","scanned":false,"children":[{"title":"3.5.4.2.1 redirect","href":"http://book.cakephp.org/view/982/redirect","scanned":false,"children":[]},{"title":"3.5.4.2.2 flash","href":"http://book.cakephp.org/view/983/flash","scanned":false,"children":[]}]},{"title":"3.5.4.3 Callbacks","href":"http://book.cakephp.org/view/984/Callbacks","scanned":false,"children":[]},{"title":"3.5.4.4 Other Useful Methods","href":"http://book.cakephp.org/view/985/Other-Useful-Methods","scanned":false,"children":[{"title":"3.5.4.4.1 constructClasses","href":"http://book.cakephp.org/view/986/constructClasses","scanned":false,"children":[]},{"title":"3.5.4.4.2 referer","href":"http://book.cakephp.org/view/987/referer","scanned":false,"children":[]},{"title":"3.5.4.4.3 disableCache","href":"http://book.cakephp.org/view/988/disableCache","scanned":false,"children":[]},{"title":"3.5.4.4.4 postConditions","href":"http://book.cakephp.org/view/989/postConditions","scanned":false,"children":[]},{"title":"3.5.4.4.5 paginate","href":"http://book.cakephp.org/view/990/paginate","scanned":false,"children":[]},{"title":"3.5.4.4.6 requestAction","href":"http://book.cakephp.org/view/991/requestAction","scanned":false,"children":[]},{"title":"3.5.4.4.7 loadModel","href":"http://book.cakephp.org/view/992/loadModel","scanned":false,"children":[]}]}]}]},{"title":"3.6 Components","href":"http://book.cakephp.org/view/993/Components","scanned":false,"children":[{"title":"3.6.1 Introduction","href":"http://book.cakephp.org/view/994/Introduction","scanned":false,"children":[]},{"title":"3.6.2 Configuring Components","href":"http://book.cakephp.org/view/995/Configuring-Components","scanned":false,"children":[]},{"title":"3.6.3 Creating Components","href":"http://book.cakephp.org/view/996/Creating-Components","scanned":false,"children":[{"title":"3.6.3.1 Including Components in your Controllers","href":"http://book.cakephp.org/view/997/Including-Components-in-your-Controllers","scanned":false,"children":[]},{"title":"3.6.3.2 MVC Class Access Within Components","href":"http://book.cakephp.org/view/998/MVC-Class-Access-Within-Components","scanned":false,"children":[]},{"title":"3.6.3.3 Using other Components in your Component","href":"http://book.cakephp.org/view/999/Using-other-Components-in-your-Component","scanned":false,"children":[]}]}]},{"title":"3.7 Models","href":"http://book.cakephp.org/view/1000/Models","scanned":false,"children":[{"title":"3.7.1 Understanding Models","href":"http://book.cakephp.org/view/1001/Understanding-Models","scanned":false,"children":[]},{"title":"3.7.2 Creating Database Tables","href":"http://book.cakephp.org/view/1002/Creating-Database-Tables","scanned":false,"children":[{"title":"3.7.2.1 Data Type Associations by Database","href":"http://book.cakephp.org/view/1003/Data-Type-Associations-by-Database","scanned":false,"children":[{"title":"3.7.2.1.1 MySQL","href":"http://book.cakephp.org/view/1004/MySQL","scanned":false,"children":[]},{"title":"3.7.2.1.2 MySQLi","href":"http://book.cakephp.org/view/1005/MySQLi","scanned":false,"children":[]},{"title":"3.7.2.1.3 ADOdb","href":"http://book.cakephp.org/view/1006/ADOdb","scanned":false,"children":[]},{"title":"3.7.2.1.4 DB2","href":"http://book.cakephp.org/view/1007/DB2","scanned":false,"children":[]},{"title":"3.7.2.1.5 Firebird/Interbase","href":"http://book.cakephp.org/view/1008/Firebird-Interbase","scanned":false,"children":[]},{"title":"3.7.2.1.6 MS SQL","href":"http://book.cakephp.org/view/1009/MS-SQL","scanned":false,"children":[]},{"title":"3.7.2.1.7 Oracle","href":"http://book.cakephp.org/view/1010/Oracle","scanned":false,"children":[]},{"title":"3.7.2.1.8 PostgreSQL","href":"http://book.cakephp.org/view/1011/PostgreSQL","scanned":false,"children":[]},{"title":"3.7.2.1.9 SQLite","href":"http://book.cakephp.org/view/1012/SQLite","scanned":false,"children":[]},{"title":"3.7.2.1.10 Sybase","href":"http://book.cakephp.org/view/1013/Sybase","scanned":false,"children":[]}]},{"title":"3.7.2.2 Titles","href":"http://book.cakephp.org/view/1014/Titles","scanned":false,"children":[]},{"title":"3.7.2.3 created and modified","href":"http://book.cakephp.org/view/1015/created-and-modified","scanned":false,"children":[]},{"title":"3.7.2.4 Using UUIDs as Primary Keys","href":"http://book.cakephp.org/view/1016/Using-UUIDs-as-Primary-Keys","scanned":false,"children":[]}]},{"title":"3.7.3 Retrieving Your Data","href":"http://book.cakephp.org/view/1017/Retrieving-Your-Data","scanned":false,"children":[{"title":"3.7.3.1 find","href":"http://book.cakephp.org/view/1018/find","scanned":false,"children":[{"title":"3.7.3.1.1 find('first')","href":"http://book.cakephp.org/view/1019/find-first","scanned":false,"children":[]},{"title":"3.7.3.1.2 find('count')","href":"http://book.cakephp.org/view/1020/find-count","scanned":false,"children":[]},{"title":"3.7.3.1.3 find('all')","href":"http://book.cakephp.org/view/1021/find-all","scanned":false,"children":[]},{"title":"3.7.3.1.4 find('list')","href":"http://book.cakephp.org/view/1022/find-list","scanned":false,"children":[]},{"title":"3.7.3.1.5 find('threaded')","href":"http://book.cakephp.org/view/1023/find-threaded","scanned":false,"children":[]},{"title":"3.7.3.1.6 find('neighbors')","href":"http://book.cakephp.org/view/1024/find-neighbors","scanned":false,"children":[]}]},{"title":"3.7.3.2 findAllBy","href":"http://book.cakephp.org/view/1025/findAllBy","scanned":false,"children":[]},{"title":"3.7.3.3 findBy","href":"http://book.cakephp.org/view/1026/findBy","scanned":false,"children":[]},{"title":"3.7.3.4 query","href":"http://book.cakephp.org/view/1027/query","scanned":false,"children":[]},{"title":"3.7.3.5 field","href":"http://book.cakephp.org/view/1028/field","scanned":false,"children":[]},{"title":"3.7.3.6 read()","href":"http://book.cakephp.org/view/1029/read","scanned":false,"children":[]},{"title":"3.7.3.7 Complex Find Conditions","href":"http://book.cakephp.org/view/1030/Complex-Find-Conditions","scanned":false,"children":[]}]},{"title":"3.7.4 Saving Your Data","href":"http://book.cakephp.org/view/1031/Saving-Your-Data","scanned":false,"children":[{"title":"3.7.4.1 Saving Related Model Data (hasOne, hasMany, belongsTo)","href":"http://book.cakephp.org/view/1032/Saving-Related-Model-Data-hasOne-hasMany-belongsTo","scanned":false,"children":[{"title":"3.7.4.1.1 counterCache - Cache your count()","href":"http://book.cakephp.org/view/1033/counterCache-Cache-your-count","scanned":false,"children":[]}]},{"title":"3.7.4.2 Saving Related Model Data (HABTM)","href":"http://book.cakephp.org/view/1034/Saving-Related-Model-Data-HABTM","scanned":false,"children":[]}]},{"title":"3.7.5 Deleting Data","href":"http://book.cakephp.org/view/1035/Deleting-Data","scanned":false,"children":[{"title":"3.7.5.1 delete","href":"http://book.cakephp.org/view/1036/delete","scanned":false,"children":[]},{"title":"3.7.5.2 deleteAll","href":"http://book.cakephp.org/view/1038/deleteAll","scanned":false,"children":[]}]},{"title":"3.7.6 Associations: Linking Models Together","href":"http://book.cakephp.org/view/1039/Associations-Linking-Models-Together","scanned":false,"children":[{"title":"3.7.6.1 Relationship Types","href":"http://book.cakephp.org/view/1040/Relationship-Types","scanned":false,"children":[]},{"title":"3.7.6.2 hasOne","href":"http://book.cakephp.org/view/1041/hasOne","scanned":false,"children":[]},{"title":"3.7.6.3 belongsTo","href":"http://book.cakephp.org/view/1042/belongsTo","scanned":false,"children":[]},{"title":"3.7.6.4 hasMany","href":"http://book.cakephp.org/view/1043/hasMany","scanned":false,"children":[]},{"title":"3.7.6.5 hasAndBelongsToMany (HABTM)","href":"http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM","scanned":false,"children":[]},{"title":"3.7.6.6 hasMany through (The Join Model)","href":"http://book.cakephp.org/view/1650/hasMany-through-The-Join-Model","scanned":false,"children":[]},{"title":"3.7.6.7 Creating and Destroying Associations on the Fly","href":"http://book.cakephp.org/view/1045/Creating-and-Destroying-Associations-on-the-Fly","scanned":false,"children":[]},{"title":"3.7.6.8 Multiple relations to the same model","href":"http://book.cakephp.org/view/1046/Multiple-relations-to-the-same-model","scanned":false,"children":[]},{"title":"3.7.6.9 Joining tables","href":"http://book.cakephp.org/view/1047/Joining-tables","scanned":false,"children":[]}]},{"title":"3.7.7 Callback Methods","href":"http://book.cakephp.org/view/1048/Callback-Methods","scanned":false,"children":[{"title":"3.7.7.1 beforeFind","href":"http://book.cakephp.org/view/1049/beforeFind","scanned":false,"children":[]},{"title":"3.7.7.2 afterFind","href":"http://book.cakephp.org/view/1050/afterFind","scanned":false,"children":[]},{"title":"3.7.7.3 beforeValidate","href":"http://book.cakephp.org/view/1051/beforeValidate","scanned":false,"children":[]},{"title":"3.7.7.4 beforeSave","href":"http://book.cakephp.org/view/1052/beforeSave","scanned":false,"children":[]},{"title":"3.7.7.5 afterSave","href":"http://book.cakephp.org/view/1053/afterSave","scanned":false,"children":[]},{"title":"3.7.7.6 beforeDelete","href":"http://book.cakephp.org/view/1054/beforeDelete","scanned":false,"children":[]},{"title":"3.7.7.7 afterDelete","href":"http://book.cakephp.org/view/1055/afterDelete","scanned":false,"children":[]},{"title":"3.7.7.8 onError","href":"http://book.cakephp.org/view/1056/onError","scanned":false,"children":[]}]},{"title":"3.7.8 Model Attributes","href":"http://book.cakephp.org/view/1057/Model-Attributes","scanned":false,"children":[{"title":"3.7.8.1 useDbConfig","href":"http://book.cakephp.org/view/1058/useDbConfig","scanned":false,"children":[]},{"title":"3.7.8.2 useTable","href":"http://book.cakephp.org/view/1059/useTable","scanned":false,"children":[]},{"title":"3.7.8.3 tablePrefix","href":"http://book.cakephp.org/view/1060/tablePrefix","scanned":false,"children":[]},{"title":"3.7.8.4 primaryKey","href":"http://book.cakephp.org/view/1061/primaryKey","scanned":false,"children":[]},{"title":"3.7.8.5 displayField","href":"http://book.cakephp.org/view/1062/displayField","scanned":false,"children":[]},{"title":"3.7.8.6 recursive","href":"http://book.cakephp.org/view/1063/recursive","scanned":false,"children":[]},{"title":"3.7.8.7 order","href":"http://book.cakephp.org/view/1064/order","scanned":false,"children":[]},{"title":"3.7.8.8 data","href":"http://book.cakephp.org/view/1065/data","scanned":false,"children":[]},{"title":"3.7.8.9 _schema","href":"http://book.cakephp.org/view/1066/_schema","scanned":false,"children":[]},{"title":"3.7.8.10 validate","href":"http://book.cakephp.org/view/1067/validate","scanned":false,"children":[]},{"title":"3.7.8.11 virtualFields","href":"http://book.cakephp.org/view/1588/virtualFields","scanned":false,"children":[]},{"title":"3.7.8.12 name","href":"http://book.cakephp.org/view/1068/name","scanned":false,"children":[]},{"title":"3.7.8.13 cacheQueries","href":"http://book.cakephp.org/view/1069/cacheQueries","scanned":false,"children":[]}]},{"title":"3.7.9 Additional Methods and Properties","href":"http://book.cakephp.org/view/1070/Additional-Methods-and-Properties","scanned":false,"children":[{"title":"3.7.9.1 Using virtualFields","href":"http://book.cakephp.org/view/1590/Using-virtualFields","scanned":false,"children":[]}]},{"title":"3.7.10 Virtual fields","href":"http://book.cakephp.org/view/1608/Virtual-fields","scanned":false,"children":[{"title":"3.7.10.1 Creating virtual fields","href":"http://book.cakephp.org/view/1609/Creating-virtual-fields","scanned":false,"children":[]},{"title":"3.7.10.2 Using virtual fields","href":"http://book.cakephp.org/view/1610/Using-virtual-fields","scanned":false,"children":[]},{"title":"3.7.10.3 Virtual fields and model aliases","href":"http://book.cakephp.org/view/1632/Virtual-fields-and-model-aliases","scanned":false,"children":[]},{"title":"3.7.10.4 Limitations of virtualFields","href":"http://book.cakephp.org/view/1642/Limitations-of-virtualFields","scanned":false,"children":[]}]},{"title":"3.7.11 Transactions","href":"http://book.cakephp.org/view/1633/Transactions","scanned":false,"children":[]}]},{"title":"3.8 Behaviors","href":"http://book.cakephp.org/view/1071/Behaviors","scanned":false,"children":[{"title":"3.8.1 Using Behaviors","href":"http://book.cakephp.org/view/1072/Using-Behaviors","scanned":false,"children":[]},{"title":"3.8.2 Creating Behaviors","href":"http://book.cakephp.org/view/1073/Creating-Behaviors","scanned":false,"children":[]},{"title":"3.8.3 Creating behavior methods","href":"http://book.cakephp.org/view/1074/Creating-behavior-methods","scanned":false,"children":[]},{"title":"3.8.4 Behavior callbacks","href":"http://book.cakephp.org/view/1640/Behavior-callbacks","scanned":false,"children":[]},{"title":"3.8.5 Creating a behavior callback","href":"http://book.cakephp.org/view/1641/Creating-a-behavior-callback","scanned":false,"children":[]}]},{"title":"3.9 DataSources","href":"http://book.cakephp.org/view/1075/DataSources","scanned":false,"children":[{"title":"3.9.1 Basic API For DataSources","href":"http://book.cakephp.org/view/1076/Basic-API-For-DataSources","scanned":false,"children":[]},{"title":"3.9.2 An Example","href":"http://book.cakephp.org/view/1077/An-Example","scanned":false,"children":[]},{"title":"3.9.3 Plugin DataSources and Datasource Drivers","href":"http://book.cakephp.org/view/1652/Plugin-DataSources-and-Datasource-Drivers","scanned":false,"children":[]}]},{"title":"3.10 Views","href":"http://book.cakephp.org/view/1078/Views","scanned":false,"children":[{"title":"3.10.1 View Templates","href":"http://book.cakephp.org/view/1079/View-Templates","scanned":false,"children":[]},{"title":"3.10.2 Layouts","href":"http://book.cakephp.org/view/1080/Layouts","scanned":false,"children":[]},{"title":"3.10.3 Elements","href":"http://book.cakephp.org/view/1081/Elements","scanned":false,"children":[{"title":"3.10.3.1 Passing Variables into an Element","href":"http://book.cakephp.org/view/1082/Passing-Variables-into-an-Element","scanned":false,"children":[]},{"title":"3.10.3.2 Caching Elements","href":"http://book.cakephp.org/view/1083/Caching-Elements","scanned":false,"children":[]},{"title":"3.10.3.3 Requesting Elements from a Plugin","href":"http://book.cakephp.org/view/1084/Requesting-Elements-from-a-Plugin","scanned":false,"children":[]}]},{"title":"3.10.4 View methods","href":"http://book.cakephp.org/view/1085/View-methods","scanned":false,"children":[{"title":"3.10.4.1 set()","href":"http://book.cakephp.org/view/1086/set","scanned":false,"children":[]},{"title":"3.10.4.2 getVar()","href":"http://book.cakephp.org/view/1087/getVar","scanned":false,"children":[]},{"title":"3.10.4.3 getVars()","href":"http://book.cakephp.org/view/1088/getVars","scanned":false,"children":[]},{"title":"3.10.4.4 error()","href":"http://book.cakephp.org/view/1089/error","scanned":false,"children":[]},{"title":"3.10.4.5 element()","href":"http://book.cakephp.org/view/1090/element","scanned":false,"children":[]},{"title":"3.10.4.6 uuid","href":"http://book.cakephp.org/view/1091/uuid","scanned":false,"children":[]},{"title":"3.10.4.7 addScript()","href":"http://book.cakephp.org/view/1092/addScript","scanned":false,"children":[]}]},{"title":"3.10.5 Themes","href":"http://book.cakephp.org/view/1093/Themes","scanned":false,"children":[{"title":"3.10.5.1 Increasing performance of plugin and theme assets","href":"http://book.cakephp.org/view/1614/Increasing-performance-of-plugin-and-theme-assets","scanned":false,"children":[]}]},{"title":"3.10.6 Media Views","href":"http://book.cakephp.org/view/1094/Media-Views","scanned":false,"children":[]}]},{"title":"3.11 Helpers","href":"http://book.cakephp.org/view/1095/Helpers","scanned":false,"children":[{"title":"3.11.1 Using Helpers","href":"http://book.cakephp.org/view/1096/Using-Helpers","scanned":false,"children":[]},{"title":"3.11.2 Creating Helpers","href":"http://book.cakephp.org/view/1097/Creating-Helpers","scanned":false,"children":[{"title":"3.11.2.1 Including other Helpers","href":"http://book.cakephp.org/view/1098/Including-other-Helpers","scanned":false,"children":[]},{"title":"3.11.2.2 Callback method","href":"http://book.cakephp.org/view/1099/Callback-method","scanned":false,"children":[]},{"title":"3.11.2.3 Using your Helper","href":"http://book.cakephp.org/view/1100/Using-your-Helper","scanned":false,"children":[]}]},{"title":"3.11.3 Creating Functionality for All Helpers","href":"http://book.cakephp.org/view/1101/Creating-Functionality-for-All-Helpers","scanned":false,"children":[]},{"title":"3.11.4 Core Helpers","href":"http://book.cakephp.org/view/1102/Core-Helpers","scanned":false,"children":[]}]},{"title":"3.12 Scaffolding","href":"http://book.cakephp.org/view/1103/Scaffolding","scanned":false,"children":[{"title":"3.12.1 Creating a simple admin interface with scaffolding","href":"http://book.cakephp.org/view/1104/Creating-a-simple-admin-interface-with-scaffolding","scanned":false,"children":[]},{"title":"3.12.2 Customizing Scaffold Views","href":"http://book.cakephp.org/view/1105/Customizing-Scaffold-Views","scanned":false,"children":[]}]},{"title":"3.13 The CakePHP Console","href":"http://book.cakephp.org/view/1106/The-CakePHP-Console","scanned":false,"children":[{"title":"3.13.1 Creating Shells & Tasks","href":"http://book.cakephp.org/view/1107/Creating-Shells-Tasks","scanned":false,"children":[{"title":"3.13.1.1 Creating Your Own Shells","href":"http://book.cakephp.org/view/1108/Creating-Your-Own-Shells","scanned":false,"children":[]},{"title":"3.13.1.2 Tasks","href":"http://book.cakephp.org/view/1109/Tasks","scanned":false,"children":[]}]},{"title":"3.13.2 Running Shells as cronjobs","href":"http://book.cakephp.org/view/1110/Running-Shells-as-cronjobs","scanned":false,"children":[]}]},{"title":"3.14 Plugins","href":"http://book.cakephp.org/view/1111/Plugins","scanned":false,"children":[{"title":"3.14.1 Creating a Plugin","href":"http://book.cakephp.org/view/1112/Creating-a-Plugin","scanned":false,"children":[]},{"title":"3.14.2 Plugin Controllers","href":"http://book.cakephp.org/view/1113/Plugin-Controllers","scanned":false,"children":[]},{"title":"3.14.3 Plugin Models","href":"http://book.cakephp.org/view/1114/Plugin-Models","scanned":false,"children":[]},{"title":"3.14.4 Plugin Views","href":"http://book.cakephp.org/view/1115/Plugin-Views","scanned":false,"children":[]},{"title":"3.14.5 Components, Helpers and Behaviors","href":"http://book.cakephp.org/view/1116/Components-Helpers-and-Behaviors","scanned":false,"children":[]},{"title":"3.14.6 Plugin assets","href":"http://book.cakephp.org/view/1117/Plugin-assets","scanned":false,"children":[]},{"title":"3.14.7 Plugin Tips","href":"http://book.cakephp.org/view/1118/Plugin-Tips","scanned":false,"children":[]}]},{"title":"3.15 Global Constants and Functions","href":"http://book.cakephp.org/view/1119/Global-Constants-and-Functions","scanned":false,"children":[{"title":"3.15.1 Global Functions","href":"http://book.cakephp.org/view/1120/Global-Functions","scanned":false,"children":[{"title":"3.15.1.1 __","href":"http://book.cakephp.org/view/1121/__","scanned":false,"children":[]},{"title":"3.15.1.2 a","href":"http://book.cakephp.org/view/1122/a","scanned":false,"children":[]},{"title":"3.15.1.3 aa","href":"http://book.cakephp.org/view/1123/aa","scanned":false,"children":[]},{"title":"3.15.1.4 am","href":"http://book.cakephp.org/view/1124/am","scanned":false,"children":[]},{"title":"3.15.1.5 config","href":"http://book.cakephp.org/view/1125/config","scanned":false,"children":[]},{"title":"3.15.1.6 convertSlash","href":"http://book.cakephp.org/view/1126/convertSlash","scanned":false,"children":[]},{"title":"3.15.1.7 debug","href":"http://book.cakephp.org/view/1128/debug","scanned":false,"children":[]},{"title":"3.15.1.8 e","href":"http://book.cakephp.org/view/1129/e","scanned":false,"children":[]},{"title":"3.15.1.9 env","href":"http://book.cakephp.org/view/1130/env","scanned":false,"children":[]},{"title":"3.15.1.10 fileExistsInPath","href":"http://book.cakephp.org/view/1131/fileExistsInPath","scanned":false,"children":[]},{"title":"3.15.1.11 h","href":"http://book.cakephp.org/view/1132/h","scanned":false,"children":[]},{"title":"3.15.1.12 ife","href":"http://book.cakephp.org/view/1133/ife","scanned":false,"children":[]},{"title":"3.15.1.13 low","href":"http://book.cakephp.org/view/1134/low","scanned":false,"children":[]},{"title":"3.15.1.14 pr","href":"http://book.cakephp.org/view/1136/pr","scanned":false,"children":[]},{"title":"3.15.1.15 r","href":"http://book.cakephp.org/view/1137/r","scanned":false,"children":[]},{"title":"3.15.1.16 stripslashes_deep","href":"http://book.cakephp.org/view/1138/stripslashes_deep","scanned":false,"children":[]},{"title":"3.15.1.17 up","href":"http://book.cakephp.org/view/1139/up","scanned":false,"children":[]},{"title":"3.15.1.18 uses","href":"http://book.cakephp.org/view/1140/uses","scanned":false,"children":[]}]},{"title":"3.15.2 Core Definition Constants","href":"http://book.cakephp.org/view/1141/Core-Definition-Constants","scanned":false,"children":[]}]},{"title":"3.16 Vendor packages","href":"http://book.cakephp.org/view/1612/Vendor-packages","scanned":false,"children":[{"title":"3.16.1 Vendor assets","href":"http://book.cakephp.org/view/1613/Vendor-assets","scanned":false,"children":[]}]}]},{"title":"4 Common Tasks With CakePHP","href":"http://book.cakephp.org/view/1142/Common-Tasks-With-CakePHP","scanned":false,"children":[{"title":"4.1 Data Validation","href":"http://book.cakephp.org/view/1143/Data-Validation","scanned":false,"children":[{"title":"4.1.1 Simple Rules","href":"http://book.cakephp.org/view/1144/Simple-Rules","scanned":false,"children":[]},{"title":"4.1.2 One Rule Per Field","href":"http://book.cakephp.org/view/1145/One-Rule-Per-Field","scanned":false,"children":[{"title":"4.1.2.1 rule","href":"http://book.cakephp.org/view/1146/rule","scanned":false,"children":[]},{"title":"4.1.2.2 required","href":"http://book.cakephp.org/view/1147/required","scanned":false,"children":[]},{"title":"4.1.2.3 allowEmpty","href":"http://book.cakephp.org/view/1148/allowEmpty","scanned":false,"children":[]},{"title":"4.1.2.4 on","href":"http://book.cakephp.org/view/1149/on","scanned":false,"children":[]},{"title":"4.1.2.5 message","href":"http://book.cakephp.org/view/1150/message","scanned":false,"children":[]}]},{"title":"4.1.3 Multiple Rules per Field","href":"http://book.cakephp.org/view/1151/Multiple-Rules-per-Field","scanned":false,"children":[]},{"title":"4.1.4 Core Validation Rules","href":"http://book.cakephp.org/view/1152/Core-Validation-Rules","scanned":false,"children":[{"title":"4.1.4.1 alphaNumeric","href":"http://book.cakephp.org/view/1153/alphaNumeric","scanned":false,"children":[]},{"title":"4.1.4.2 between","href":"http://book.cakephp.org/view/1154/between","scanned":false,"children":[]},{"title":"4.1.4.3 blank","href":"http://book.cakephp.org/view/1155/blank","scanned":false,"children":[]},{"title":"4.1.4.4 boolean","href":"http://book.cakephp.org/view/1156/boolean","scanned":false,"children":[]},{"title":"4.1.4.5 cc","href":"http://book.cakephp.org/view/1157/cc","scanned":false,"children":[]},{"title":"4.1.4.6 comparison","href":"http://book.cakephp.org/view/1158/comparison","scanned":false,"children":[]},{"title":"4.1.4.7 date","href":"http://book.cakephp.org/view/1159/date","scanned":false,"children":[]},{"title":"4.1.4.8 decimal","href":"http://book.cakephp.org/view/1160/decimal","scanned":false,"children":[]},{"title":"4.1.4.9 email","href":"http://book.cakephp.org/view/1161/email","scanned":false,"children":[]},{"title":"4.1.4.10 equalTo","href":"http://book.cakephp.org/view/1162/equalTo","scanned":false,"children":[]},{"title":"4.1.4.11 extension","href":"http://book.cakephp.org/view/1163/extension","scanned":false,"children":[]},{"title":"4.1.4.12 file","href":"http://book.cakephp.org/view/1164/file","scanned":false,"children":[]},{"title":"4.1.4.13 ip","href":"http://book.cakephp.org/view/1165/ip","scanned":false,"children":[]},{"title":"4.1.4.14 isUnique","href":"http://book.cakephp.org/view/1166/isUnique","scanned":false,"children":[]},{"title":"4.1.4.15 minLength","href":"http://book.cakephp.org/view/1167/minLength","scanned":false,"children":[]},{"title":"4.1.4.16 maxLength","href":"http://book.cakephp.org/view/1168/maxLength","scanned":false,"children":[]},{"title":"4.1.4.17 money","href":"http://book.cakephp.org/view/1169/money","scanned":false,"children":[]},{"title":"4.1.4.18 multiple","href":"http://book.cakephp.org/view/1170/multiple","scanned":false,"children":[]},{"title":"4.1.4.19 inList","href":"http://book.cakephp.org/view/1171/inList","scanned":false,"children":[]},{"title":"4.1.4.20 numeric","href":"http://book.cakephp.org/view/1172/numeric","scanned":false,"children":[]},{"title":"4.1.4.21 notEmpty","href":"http://book.cakephp.org/view/1173/notEmpty","scanned":false,"children":[]},{"title":"4.1.4.22 phone","href":"http://book.cakephp.org/view/1174/phone","scanned":false,"children":[]},{"title":"4.1.4.23 postal","href":"http://book.cakephp.org/view/1175/postal","scanned":false,"children":[]},{"title":"4.1.4.24 range","href":"http://book.cakephp.org/view/1176/range","scanned":false,"children":[]},{"title":"4.1.4.25 ssn","href":"http://book.cakephp.org/view/1177/ssn","scanned":false,"children":[]},{"title":"4.1.4.26 url","href":"http://book.cakephp.org/view/1178/url","scanned":false,"children":[]}]},{"title":"4.1.5 Custom Validation Rules","href":"http://book.cakephp.org/view/1179/Custom-Validation-Rules","scanned":false,"children":[{"title":"4.1.5.1 Custom Regular Expression Validation","href":"http://book.cakephp.org/view/1180/Custom-Regular-Expression-Validation","scanned":false,"children":[]},{"title":"4.1.5.2 Adding your own Validation Methods","href":"http://book.cakephp.org/view/1181/Adding-your-own-Validation-Methods","scanned":false,"children":[]}]},{"title":"4.1.6 Validating Data from the Controller","href":"http://book.cakephp.org/view/1182/Validating-Data-from-the-Controller","scanned":false,"children":[]}]},{"title":"4.2 Data Sanitization","href":"http://book.cakephp.org/view/1183/Data-Sanitization","scanned":false,"children":[{"title":"4.2.1 paranoid","href":"http://book.cakephp.org/view/1184/paranoid","scanned":false,"children":[]},{"title":"4.2.2 html","href":"http://book.cakephp.org/view/1185/html","scanned":false,"children":[]},{"title":"4.2.3 escape","href":"http://book.cakephp.org/view/1186/escape","scanned":false,"children":[]},{"title":"4.2.4 clean","href":"http://book.cakephp.org/view/1187/clean","scanned":false,"children":[]}]},{"title":"4.3 Error Handling","href":"http://book.cakephp.org/view/1188/Error-Handling","scanned":false,"children":[]},{"title":"4.4 Debugging","href":"http://book.cakephp.org/view/1189/Debugging","scanned":false,"children":[{"title":"4.4.1 Basic Debugging","href":"http://book.cakephp.org/view/1190/Basic-Debugging","scanned":false,"children":[]},{"title":"4.4.2 Using the Debugger Class","href":"http://book.cakephp.org/view/1191/Using-the-Debugger-Class","scanned":false,"children":[]},{"title":"4.4.3 Debugger Class","href":"http://book.cakephp.org/view/1192/Debugger-Class","scanned":false,"children":[]}]},{"title":"4.5 Caching","href":"http://book.cakephp.org/view/1193/Caching","scanned":false,"children":[]},{"title":"4.6 Logging","href":"http://book.cakephp.org/view/1194/Logging","scanned":false,"children":[{"title":"4.6.1 Writing to logs","href":"http://book.cakephp.org/view/1195/Writing-to-logs","scanned":false,"children":[]},{"title":"4.6.2 Using the default FileLog class","href":"http://book.cakephp.org/view/1585/Using-the-default-FileLog-class","scanned":false,"children":[]},{"title":"4.6.3 Creating and configuring log streams","href":"http://book.cakephp.org/view/1582/Creating-and-configuring-log-streams","scanned":false,"children":[]},{"title":"4.6.4 Interacting with log streams","href":"http://book.cakephp.org/view/1583/Interacting-with-log-streams","scanned":false,"children":[]},{"title":"4.6.5 Error logging","href":"http://book.cakephp.org/view/1584/Error-logging","scanned":false,"children":[]}]},{"title":"4.7 Testing","href":"http://book.cakephp.org/view/1196/Testing","scanned":false,"children":[{"title":"4.7.1 Preparing for testing","href":"http://book.cakephp.org/view/1197/Preparing-for-testing","scanned":false,"children":[{"title":"4.7.1.1 Installing SimpleTest","href":"http://book.cakephp.org/view/1198/Installing-SimpleTest","scanned":false,"children":[]},{"title":"4.7.1.2 Running Core test cases","href":"http://book.cakephp.org/view/1199/Running-Core-test-cases","scanned":false,"children":[]}]},{"title":"4.7.2 Testing overview - Unit testing vs. Web testing","href":"http://book.cakephp.org/view/1200/Testing-overview-Unit-testing-vs-Web-testing","scanned":false,"children":[]},{"title":"4.7.3 Preparing test data","href":"http://book.cakephp.org/view/1201/Preparing-test-data","scanned":false,"children":[{"title":"4.7.3.1 About fixtures","href":"http://book.cakephp.org/view/1202/About-fixtures","scanned":false,"children":[]},{"title":"4.7.3.2 Creating fixtures","href":"http://book.cakephp.org/view/1203/Creating-fixtures","scanned":false,"children":[]},{"title":"4.7.3.3 Importing table information and records","href":"http://book.cakephp.org/view/1204/Importing-table-information-and-records","scanned":false,"children":[]}]},{"title":"4.7.4 Creating tests","href":"http://book.cakephp.org/view/1205/Creating-tests","scanned":false,"children":[{"title":"4.7.4.1 CakeTestCase Callback Methods","href":"http://book.cakephp.org/view/1206/CakeTestCase-Callback-Methods","scanned":false,"children":[]}]},{"title":"4.7.5 Testing models","href":"http://book.cakephp.org/view/1207/Testing-models","scanned":false,"children":[{"title":"4.7.5.1 Creating a test case","href":"http://book.cakephp.org/view/1208/Creating-a-test-case","scanned":false,"children":[]},{"title":"4.7.5.2 Creating a test method","href":"http://book.cakephp.org/view/1209/Creating-a-test-method","scanned":false,"children":[]}]},{"title":"4.7.6 Testing controllers","href":"http://book.cakephp.org/view/1210/Testing-controllers","scanned":false,"children":[{"title":"4.7.6.1 Creating a test case","href":"http://book.cakephp.org/view/1211/Creating-a-test-case","scanned":false,"children":[]},{"title":"4.7.6.2 The testAction method","href":"http://book.cakephp.org/view/1212/The-testAction-method","scanned":false,"children":[]},{"title":"4.7.6.3 Pitfalls","href":"http://book.cakephp.org/view/1213/Pitfalls","scanned":false,"children":[]}]},{"title":"4.7.7 Testing Helpers","href":"http://book.cakephp.org/view/1214/Testing-Helpers","scanned":false,"children":[{"title":"4.7.7.1 Creating Helper test, part I","href":"http://book.cakephp.org/view/1215/Creating-Helper-test-part-I","scanned":false,"children":[]}]},{"title":"4.7.8 Testing components","href":"http://book.cakephp.org/view/1216/Testing-components","scanned":false,"children":[{"title":"4.7.8.1 Initializing the component","href":"http://book.cakephp.org/view/1217/Initializing-the-component","scanned":false,"children":[]},{"title":"4.7.8.2 Creating a test method","href":"http://book.cakephp.org/view/1218/Creating-a-test-method","scanned":false,"children":[]}]},{"title":"4.7.9 Web testing - Testing views","href":"http://book.cakephp.org/view/1219/Web-testing-Testing-views","scanned":false,"children":[{"title":"4.7.9.1 About CakeWebTestCase","href":"http://book.cakephp.org/view/1220/About-CakeWebTestCase","scanned":false,"children":[]},{"title":"4.7.9.2 Creating a test","href":"http://book.cakephp.org/view/1221/Creating-a-test","scanned":false,"children":[]},{"title":"4.7.9.3 Walking through a page","href":"http://book.cakephp.org/view/1222/Walking-through-a-page","scanned":false,"children":[]}]},{"title":"4.7.10 Testing plugins","href":"http://book.cakephp.org/view/1223/Testing-plugins","scanned":false,"children":[]},{"title":"4.7.11 Miscellaneous","href":"http://book.cakephp.org/view/1224/Miscellaneous","scanned":false,"children":[{"title":"4.7.11.1 Customizing the test reporter","href":"http://book.cakephp.org/view/1225/Customizing-the-test-reporter","scanned":false,"children":[]},{"title":"4.7.11.2 Test Reporter methods","href":"http://book.cakephp.org/view/1587/Test-Reporter-methods","scanned":false,"children":[]},{"title":"4.7.11.3 Grouping tests","href":"http://book.cakephp.org/view/1226/Grouping-tests","scanned":false,"children":[]}]},{"title":"4.7.12 Running tests in the Command Line","href":"http://book.cakephp.org/view/1227/Running-tests-in-the-Command-Line","scanned":false,"children":[]},{"title":"4.7.13 Test Suite changes in 1.3","href":"http://book.cakephp.org/view/1586/Test-Suite-changes-in-1-3","scanned":false,"children":[]}]},{"title":"4.8 Internationalization & Localization","href":"http://book.cakephp.org/view/1228/Internationalization-Localization","scanned":false,"children":[{"title":"4.8.1 Internationalizing Your Application","href":"http://book.cakephp.org/view/1229/Internationalizing-Your-Application","scanned":false,"children":[]},{"title":"4.8.2 Localization in CakePHP","href":"http://book.cakephp.org/view/1230/Localization-in-CakePHP","scanned":false,"children":[]}]},{"title":"4.9 Pagination","href":"http://book.cakephp.org/view/1231/Pagination","scanned":false,"children":[{"title":"4.9.1 Controller Setup","href":"http://book.cakephp.org/view/1232/Controller-Setup","scanned":false,"children":[]},{"title":"4.9.2 Pagination in Views","href":"http://book.cakephp.org/view/1233/Pagination-in-Views","scanned":false,"children":[]},{"title":"4.9.3 AJAX Pagination","href":"http://book.cakephp.org/view/1234/AJAX-Pagination","scanned":false,"children":[]},{"title":"4.9.4 Custom Query Pagination","href":"http://book.cakephp.org/view/1237/Custom-Query-Pagination","scanned":false,"children":[]}]},{"title":"4.10 REST","href":"http://book.cakephp.org/view/1238/REST","scanned":false,"children":[{"title":"4.10.1 The Simple Setup","href":"http://book.cakephp.org/view/1239/The-Simple-Setup","scanned":false,"children":[]},{"title":"4.10.2 Custom REST Routing","href":"http://book.cakephp.org/view/1240/Custom-REST-Routing","scanned":false,"children":[]}]}]},{"title":"5 Core Components","href":"http://book.cakephp.org/view/1241/Core-Components","scanned":false,"children":[{"title":"5.1 Access Control Lists","href":"http://book.cakephp.org/view/1242/Access-Control-Lists","scanned":false,"children":[{"title":"5.1.1 Understanding How ACL Works","href":"http://book.cakephp.org/view/1243/Understanding-How-ACL-Works","scanned":false,"children":[]},{"title":"5.1.2 Defining Permissions: Cake's INI-based ACL","href":"http://book.cakephp.org/view/1244/Defining-Permissions-Cake-s-INI-based-ACL","scanned":false,"children":[]},{"title":"5.1.3 Defining Permissions: Cake's Database ACL","href":"http://book.cakephp.org/view/1245/Defining-Permissions-Cake-s-Database-ACL","scanned":false,"children":[{"title":"5.1.3.1 Getting Started","href":"http://book.cakephp.org/view/1246/Getting-Started","scanned":false,"children":[]},{"title":"5.1.3.2 Creating Access Request Objects (AROs) and Access Control Objects (ACOs)","href":"http://book.cakephp.org/view/1247/Creating-Access-Request-Objects-AROs-and-Access-Co","scanned":false,"children":[]},{"title":"5.1.3.3 Assigning Permissions","href":"http://book.cakephp.org/view/1248/Assigning-Permissions","scanned":false,"children":[]},{"title":"5.1.3.4 Checking Permissions: The ACL Component","href":"http://book.cakephp.org/view/1249/Checking-Permissions-The-ACL-Component","scanned":false,"children":[]}]}]},{"title":"5.2 Authentication","href":"http://book.cakephp.org/view/1250/Authentication","scanned":false,"children":[{"title":"5.2.1 Setting Auth Component Variables","href":"http://book.cakephp.org/view/1251/Setting-Auth-Component-Variables","scanned":false,"children":[]},{"title":"5.2.2 Displaying Auth Error Messages","href":"http://book.cakephp.org/view/1252/Displaying-Auth-Error-Messages","scanned":false,"children":[]},{"title":"5.2.3 Troubleshooting Auth Problems","href":"http://book.cakephp.org/view/1253/Troubleshooting-Auth-Problems","scanned":false,"children":[]},{"title":"5.2.4 Change Hash Function","href":"http://book.cakephp.org/view/1254/Change-Hash-Function","scanned":false,"children":[]},{"title":"5.2.5 AuthComponent Methods","href":"http://book.cakephp.org/view/1255/AuthComponent-Methods","scanned":false,"children":[{"title":"5.2.5.1 action","href":"http://book.cakephp.org/view/1256/action","scanned":false,"children":[]},{"title":"5.2.5.2 allow","href":"http://book.cakephp.org/view/1257/allow","scanned":false,"children":[]},{"title":"5.2.5.3 deny","href":"http://book.cakephp.org/view/1258/deny","scanned":false,"children":[]},{"title":"5.2.5.4 hashPasswords","href":"http://book.cakephp.org/view/1259/hashPasswords","scanned":false,"children":[]},{"title":"5.2.5.5 mapActions","href":"http://book.cakephp.org/view/1260/mapActions","scanned":false,"children":[]},{"title":"5.2.5.6 login","href":"http://book.cakephp.org/view/1261/login","scanned":false,"children":[]},{"title":"5.2.5.7 logout","href":"http://book.cakephp.org/view/1262/logout","scanned":false,"children":[]},{"title":"5.2.5.8 password","href":"http://book.cakephp.org/view/1263/password","scanned":false,"children":[]},{"title":"5.2.5.9 user","href":"http://book.cakephp.org/view/1264/user","scanned":false,"children":[]}]},{"title":"5.2.6 AuthComponent Variables","href":"http://book.cakephp.org/view/1265/AuthComponent-Variables","scanned":false,"children":[{"title":"5.2.6.1 userModel","href":"http://book.cakephp.org/view/1266/userModel","scanned":false,"children":[]},{"title":"5.2.6.2 fields","href":"http://book.cakephp.org/view/1267/fields","scanned":false,"children":[]},{"title":"5.2.6.3 userScope","href":"http://book.cakephp.org/view/1268/userScope","scanned":false,"children":[]},{"title":"5.2.6.4 loginAction","href":"http://book.cakephp.org/view/1269/loginAction","scanned":false,"children":[]},{"title":"5.2.6.5 loginRedirect","href":"http://book.cakephp.org/view/1270/loginRedirect","scanned":false,"children":[]},{"title":"5.2.6.6 logoutRedirect","href":"http://book.cakephp.org/view/1271/logoutRedirect","scanned":false,"children":[]},{"title":"5.2.6.7 loginError","href":"http://book.cakephp.org/view/1272/loginError","scanned":false,"children":[]},{"title":"5.2.6.8 authError","href":"http://book.cakephp.org/view/1273/authError","scanned":false,"children":[]},{"title":"5.2.6.9 autoRedirect","href":"http://book.cakephp.org/view/1274/autoRedirect","scanned":false,"children":[]},{"title":"5.2.6.10 authorize","href":"http://book.cakephp.org/view/1275/authorize","scanned":false,"children":[]},{"title":"5.2.6.11 sessionKey","href":"http://book.cakephp.org/view/1276/sessionKey","scanned":false,"children":[]},{"title":"5.2.6.12 ajaxLogin","href":"http://book.cakephp.org/view/1277/ajaxLogin","scanned":false,"children":[]},{"title":"5.2.6.13 authenticate","href":"http://book.cakephp.org/view/1278/authenticate","scanned":false,"children":[]},{"title":"5.2.6.14 actionPath","href":"http://book.cakephp.org/view/1279/actionPath","scanned":false,"children":[]},{"title":"5.2.6.15 5.2.6.15 flashElement","href":"http://book.cakephp.org/view/1637/x5-2-6-15-flashElement","scanned":false,"children":[]}]}]},{"title":"5.3 Cookies","href":"http://book.cakephp.org/view/1280/Cookies","scanned":false,"children":[{"title":"5.3.1 Controller Setup","href":"http://book.cakephp.org/view/1281/Controller-Setup","scanned":false,"children":[]},{"title":"5.3.2 Using the Component","href":"http://book.cakephp.org/view/1282/Using-the-Component","scanned":false,"children":[]}]},{"title":"5.4 Email","href":"http://book.cakephp.org/view/1283/Email","scanned":false,"children":[{"title":"5.4.1 Class Attributes and Variables","href":"http://book.cakephp.org/view/1284/Class-Attributes-and-Variables","scanned":false,"children":[{"title":"5.4.1.1 Sending Multiple Emails in a loop","href":"http://book.cakephp.org/view/1285/Sending-Multiple-Emails-in-a-loop","scanned":false,"children":[]},{"title":"5.4.1.2 Debugging Emails","href":"http://book.cakephp.org/view/1635/Debugging-Emails","scanned":false,"children":[]}]},{"title":"5.4.2 Sending a basic message","href":"http://book.cakephp.org/view/1286/Sending-a-basic-message","scanned":false,"children":[{"title":"5.4.2.1 Setting up the Layouts","href":"http://book.cakephp.org/view/1287/Setting-up-the-Layouts","scanned":false,"children":[]},{"title":"5.4.2.2 Setup an email element for the message body","href":"http://book.cakephp.org/view/1288/Setup-an-email-element-for-the-message-body","scanned":false,"children":[]},{"title":"5.4.2.3 Controller code for using Email component","href":"http://book.cakephp.org/view/1289/Controller-code-for-using-Email-component","scanned":false,"children":[]},{"title":"5.4.2.4 Attachments","href":"http://book.cakephp.org/view/1638/Attachments","scanned":false,"children":[]}]},{"title":"5.4.3 Sending A Message Using SMTP","href":"http://book.cakephp.org/view/1290/Sending-A-Message-Using-SMTP","scanned":false,"children":[]}]},{"title":"5.5 Request Handling","href":"http://book.cakephp.org/view/1291/Request-Handling","scanned":false,"children":[{"title":"5.5.1 Obtaining Request Information","href":"http://book.cakephp.org/view/1292/Obtaining-Request-Information","scanned":false,"children":[]},{"title":"5.5.2 Request Type Detection","href":"http://book.cakephp.org/view/1293/Request-Type-Detection","scanned":false,"children":[]},{"title":"5.5.3 Obtaining Additional Client Information","href":"http://book.cakephp.org/view/1294/Obtaining-Additional-Client-Information","scanned":false,"children":[]},{"title":"5.5.4 Responding To Requests","href":"http://book.cakephp.org/view/1295/Responding-To-Requests","scanned":false,"children":[]}]},{"title":"5.6 Security Component","href":"http://book.cakephp.org/view/1296/Security-Component","scanned":false,"children":[{"title":"5.6.1 Configuration","href":"http://book.cakephp.org/view/1297/Configuration","scanned":false,"children":[]},{"title":"5.6.2 Methods","href":"http://book.cakephp.org/view/1298/Methods","scanned":false,"children":[{"title":"5.6.2.1 requirePost()","href":"http://book.cakephp.org/view/1299/requirePost","scanned":false,"children":[]},{"title":"5.6.2.2 requireSecure()","href":"http://book.cakephp.org/view/1300/requireSecure","scanned":false,"children":[]},{"title":"5.6.2.3 requireAuth()","href":"http://book.cakephp.org/view/1301/requireAuth","scanned":false,"children":[]},{"title":"5.6.2.4 requireLogin()","href":"http://book.cakephp.org/view/1302/requireLogin","scanned":false,"children":[]},{"title":"5.6.2.5 loginCredentials(string $type)","href":"http://book.cakephp.org/view/1303/loginCredentials-string-type","scanned":false,"children":[]},{"title":"5.6.2.6 loginRequest(array $options)","href":"http://book.cakephp.org/view/1304/loginRequest-array-options","scanned":false,"children":[]},{"title":"5.6.2.7 parseDigestAuthData(string $digest)","href":"http://book.cakephp.org/view/1305/parseDigestAuthData-string-digest","scanned":false,"children":[]},{"title":"5.6.2.8 generateDigestResponseHash(array $data)","href":"http://book.cakephp.org/view/1306/generateDigestResponseHash-array-data","scanned":false,"children":[]},{"title":"5.6.2.9 blackHole(object $controller, string $error)","href":"http://book.cakephp.org/view/1307/blackHole-object-controller-string-error","scanned":false,"children":[]}]},{"title":"5.6.3 Usage","href":"http://book.cakephp.org/view/1308/Usage","scanned":false,"children":[]},{"title":"5.6.4 Basic HTTP Authentication","href":"http://book.cakephp.org/view/1309/Basic-HTTP-Authentication","scanned":false,"children":[]}]},{"title":"5.7 Sessions","href":"http://book.cakephp.org/view/1310/Sessions","scanned":false,"children":[{"title":"5.7.1 Methods","href":"http://book.cakephp.org/view/1311/Methods","scanned":false,"children":[{"title":"5.7.1.1 write","href":"http://book.cakephp.org/view/1312/write","scanned":false,"children":[]},{"title":"5.7.1.2 setFlash","href":"http://book.cakephp.org/view/1313/setFlash","scanned":false,"children":[]},{"title":"5.7.1.3 read","href":"http://book.cakephp.org/view/1314/read","scanned":false,"children":[]},{"title":"5.7.1.4 check","href":"http://book.cakephp.org/view/1315/check","scanned":false,"children":[]},{"title":"5.7.1.5 delete","href":"http://book.cakephp.org/view/1316/delete","scanned":false,"children":[]},{"title":"5.7.1.6 destroy","href":"http://book.cakephp.org/view/1317/destroy","scanned":false,"children":[]},{"title":"5.7.1.7 error","href":"http://book.cakephp.org/view/1318/error","scanned":false,"children":[]}]}]}]},{"title":"6 Core Behaviors","href":"http://book.cakephp.org/view/1319/Core-Behaviors","scanned":false,"children":[{"title":"6.1 ACL","href":"http://book.cakephp.org/view/1320/ACL","scanned":false,"children":[{"title":"6.1.1 Using the AclBehavior","href":"http://book.cakephp.org/view/1321/Using-the-AclBehavior","scanned":false,"children":[]},{"title":"6.1.2 node()","href":"http://book.cakephp.org/view/1322/node","scanned":false,"children":[]}]},{"title":"6.2 Containable","href":"http://book.cakephp.org/view/1323/Containable","scanned":false,"children":[{"title":"6.2.1 Using Containable with pagination","href":"http://book.cakephp.org/view/1326/Using-Containable-with-pagination","scanned":false,"children":[]}]},{"title":"6.3 Translate","href":"http://book.cakephp.org/view/1328/Translate","scanned":false,"children":[{"title":"6.3.1 Initializing the i18n Database Tables","href":"http://book.cakephp.org/view/1329/Initializing-the-i18n-Database-Tables","scanned":false,"children":[]},{"title":"6.3.2 Attaching the Translate Behavior to your Models","href":"http://book.cakephp.org/view/1330/Attaching-the-Translate-Behavior-to-your-Models","scanned":false,"children":[]},{"title":"6.3.3 Defining the Fields","href":"http://book.cakephp.org/view/1331/Defining-the-Fields","scanned":false,"children":[]},{"title":"6.3.4 Conclusion","href":"http://book.cakephp.org/view/1332/Conclusion","scanned":false,"children":[]},{"title":"6.3.5 Retrieve all translation records for a field","href":"http://book.cakephp.org/view/1333/Retrieve-all-translation-records-for-a-field","scanned":false,"children":[{"title":"6.3.5.1 Using the bindTranslation method","href":"http://book.cakephp.org/view/1334/Using-the-bindTranslation-method","scanned":false,"children":[]}]},{"title":"6.3.6 Saving in another language","href":"http://book.cakephp.org/view/1335/Saving-in-another-language","scanned":false,"children":[]},{"title":"6.3.7 Multiple Translation Tables","href":"http://book.cakephp.org/view/1336/Multiple-Translation-Tables","scanned":false,"children":[{"title":"6.3.7.1 Create the TranslateModel","href":"http://book.cakephp.org/view/1337/Create-the-TranslateModel","scanned":false,"children":[]},{"title":"6.3.7.2 Changing the Table","href":"http://book.cakephp.org/view/1338/Changing-the-Table","scanned":false,"children":[]}]}]},{"title":"6.4 Tree","href":"http://book.cakephp.org/view/1339/Tree","scanned":false,"children":[{"title":"6.4.1 Requirements","href":"http://book.cakephp.org/view/1340/Requirements","scanned":false,"children":[]},{"title":"6.4.2 Basic Usage","href":"http://book.cakephp.org/view/1341/Basic-Usage","scanned":false,"children":[{"title":"6.4.2.1 Adding data","href":"http://book.cakephp.org/view/1342/Adding-data","scanned":false,"children":[]},{"title":"6.4.2.2 Modifying data","href":"http://book.cakephp.org/view/1343/Modifying-data","scanned":false,"children":[]},{"title":"6.4.2.3 Deleting data","href":"http://book.cakephp.org/view/1344/Deleting-data","scanned":false,"children":[]},{"title":"6.4.2.4 Querying and using your data","href":"http://book.cakephp.org/view/1345/Querying-and-using-your-data","scanned":false,"children":[{"title":"6.4.2.4.1 Children","href":"http://book.cakephp.org/view/1346/Children","scanned":false,"children":[]},{"title":"6.4.2.4.2 Counting children","href":"http://book.cakephp.org/view/1347/Counting-children","scanned":false,"children":[]},{"title":"6.4.2.4.3 generatetreelist","href":"http://book.cakephp.org/view/1348/generatetreelist","scanned":false,"children":[]},{"title":"6.4.2.4.4 getparentnode","href":"http://book.cakephp.org/view/1349/getparentnode","scanned":false,"children":[]},{"title":"6.4.2.4.5 getpath","href":"http://book.cakephp.org/view/1350/getpath","scanned":false,"children":[]}]}]},{"title":"6.4.3 Advanced Usage","href":"http://book.cakephp.org/view/1351/Advanced-Usage","scanned":false,"children":[{"title":"6.4.3.1 moveDown","href":"http://book.cakephp.org/view/1352/moveDown","scanned":false,"children":[]},{"title":"6.4.3.2 moveUp","href":"http://book.cakephp.org/view/1353/moveUp","scanned":false,"children":[]},{"title":"6.4.3.3 removeFromTree","href":"http://book.cakephp.org/view/1354/removeFromTree","scanned":false,"children":[]},{"title":"6.4.3.4 reorder","href":"http://book.cakephp.org/view/1355/reorder","scanned":false,"children":[]}]},{"title":"6.4.4 Data Integrity","href":"http://book.cakephp.org/view/1356/Data-Integrity","scanned":false,"children":[{"title":"6.4.4.1 Recover","href":"http://book.cakephp.org/view/1628/Recover","scanned":false,"children":[]},{"title":"6.4.4.2 Reorder","href":"http://book.cakephp.org/view/1629/Reorder","scanned":false,"children":[]},{"title":"6.4.4.3 Verify","href":"http://book.cakephp.org/view/1630/Verify","scanned":false,"children":[]}]}]}]},{"title":"7 Core Helpers","href":"http://book.cakephp.org/view/1357/Core-Helpers","scanned":false,"children":[{"title":"7.1 AJAX","href":"http://book.cakephp.org/view/1358/AJAX","scanned":false,"children":[{"title":"7.1.1 AjaxHelper Options","href":"http://book.cakephp.org/view/1359/AjaxHelper-Options","scanned":false,"children":[{"title":"7.1.1.1 General Options","href":"http://book.cakephp.org/view/1360/General-Options","scanned":false,"children":[]},{"title":"7.1.1.2 Callback Options","href":"http://book.cakephp.org/view/1361/Callback-Options","scanned":false,"children":[]}]},{"title":"7.1.2 Methods","href":"http://book.cakephp.org/view/1362/Methods","scanned":false,"children":[{"title":"7.1.2.1 link","href":"http://book.cakephp.org/view/1363/link","scanned":false,"children":[]},{"title":"7.1.2.2 remoteFunction","href":"http://book.cakephp.org/view/1364/remoteFunction","scanned":false,"children":[]},{"title":"7.1.2.3 remoteTimer","href":"http://book.cakephp.org/view/1365/remoteTimer","scanned":false,"children":[]},{"title":"7.1.2.4 form","href":"http://book.cakephp.org/view/1366/form","scanned":false,"children":[]},{"title":"7.1.2.5 submit","href":"http://book.cakephp.org/view/1367/submit","scanned":false,"children":[]},{"title":"7.1.2.6 observeField","href":"http://book.cakephp.org/view/1368/observeField","scanned":false,"children":[]},{"title":"7.1.2.7 observeForm","href":"http://book.cakephp.org/view/1369/observeForm","scanned":false,"children":[]},{"title":"7.1.2.8 autoComplete","href":"http://book.cakephp.org/view/1370/autoComplete","scanned":false,"children":[]},{"title":"7.1.2.9 isAjax","href":"http://book.cakephp.org/view/1371/isAjax","scanned":false,"children":[]},{"title":"7.1.2.10 drag & drop","href":"http://book.cakephp.org/view/1372/drag-drop","scanned":false,"children":[]},{"title":"7.1.2.11 slider","href":"http://book.cakephp.org/view/1373/slider","scanned":false,"children":[]},{"title":"7.1.2.12 editor","href":"http://book.cakephp.org/view/1374/editor","scanned":false,"children":[]},{"title":"7.1.2.13 sortable","href":"http://book.cakephp.org/view/1375/sortable","scanned":false,"children":[]}]}]},{"title":"7.2 Cache","href":"http://book.cakephp.org/view/1376/Cache","scanned":false,"children":[{"title":"7.2.1 General Caching","href":"http://book.cakephp.org/view/1377/General-Caching","scanned":false,"children":[]},{"title":"7.2.2 Cache Engines in Cake","href":"http://book.cakephp.org/view/1378/Cache-Engines-in-Cake","scanned":false,"children":[]},{"title":"7.2.3 Cache Helper Configuration","href":"http://book.cakephp.org/view/1379/Cache-Helper-Configuration","scanned":false,"children":[]},{"title":"7.2.4 Caching in the Controller","href":"http://book.cakephp.org/view/1380/Caching-in-the-Controller","scanned":false,"children":[]},{"title":"7.2.5 Marking Non-Cached Content in Views","href":"http://book.cakephp.org/view/1381/Marking-Non-Cached-Content-in-Views","scanned":false,"children":[]},{"title":"7.2.6 Clearing the Cache","href":"http://book.cakephp.org/view/1382/Clearing-the-Cache","scanned":false,"children":[]}]},{"title":"7.3 Form","href":"http://book.cakephp.org/view/1383/Form","scanned":false,"children":[{"title":"7.3.1 Creating Forms","href":"http://book.cakephp.org/view/1384/Creating-Forms","scanned":false,"children":[{"title":"7.3.1.1 $options[‘type’]","href":"http://book.cakephp.org/view/1385/options-type","scanned":false,"children":[]},{"title":"7.3.1.2 $options[‘action’]","href":"http://book.cakephp.org/view/1386/options-action","scanned":false,"children":[]},{"title":"7.3.1.3 $options[‘url’]","href":"http://book.cakephp.org/view/1387/options-url","scanned":false,"children":[]},{"title":"7.3.1.4 $options[‘default’]","href":"http://book.cakephp.org/view/1388/options-default","scanned":false,"children":[]},{"title":"7.3.1.5 7.3.1.5 $options['inputDefaults']","href":"http://book.cakephp.org/view/1639/x7-3-1-5-options-inputDefaults","scanned":false,"children":[]}]},{"title":"7.3.2 Closing the Form","href":"http://book.cakephp.org/view/1389/Closing-the-Form","scanned":false,"children":[]},{"title":"7.3.3 Automagic Form Elements","href":"http://book.cakephp.org/view/1390/Automagic-Form-Elements","scanned":false,"children":[{"title":"7.3.3.1 Field naming convention","href":"http://book.cakephp.org/view/1391/Field-naming-convention","scanned":false,"children":[]},{"title":"7.3.3.2 $options[‘type’]","href":"http://book.cakephp.org/view/1392/options-type","scanned":false,"children":[]},{"title":"7.3.3.3 $options[‘before’], $options[‘between’], $options[‘separator’] and $options[‘after’]","href":"http://book.cakephp.org/view/1393/options-before-options-between-options-separator-a","scanned":false,"children":[]},{"title":"7.3.3.4 $options[‘options’]","href":"http://book.cakephp.org/view/1394/options-options","scanned":false,"children":[]},{"title":"7.3.3.5 $options[‘multiple’]","href":"http://book.cakephp.org/view/1395/options-multiple","scanned":false,"children":[]},{"title":"7.3.3.6 $options[‘maxLength’]","href":"http://book.cakephp.org/view/1396/options-maxLength","scanned":false,"children":[]},{"title":"7.3.3.7 $options[‘div’]","href":"http://book.cakephp.org/view/1397/options-div","scanned":false,"children":[]},{"title":"7.3.3.8 $options[‘label’]","href":"http://book.cakephp.org/view/1398/options-label","scanned":false,"children":[]},{"title":"7.3.3.9 $options['legend']","href":"http://book.cakephp.org/view/1399/options-legend","scanned":false,"children":[]},{"title":"7.3.3.10 $options[‘id’]","href":"http://book.cakephp.org/view/1400/options-id","scanned":false,"children":[]},{"title":"7.3.3.11 $options['error']","href":"http://book.cakephp.org/view/1401/options-error","scanned":false,"children":[]},{"title":"7.3.3.12 $options['default']","href":"http://book.cakephp.org/view/1402/options-default","scanned":false,"children":[]},{"title":"7.3.3.13 $options[‘selected’]","href":"http://book.cakephp.org/view/1403/options-selected","scanned":false,"children":[]},{"title":"7.3.3.14 $options[‘rows’], $options[‘cols’]","href":"http://book.cakephp.org/view/1404/options-rows-options-cols","scanned":false,"children":[]},{"title":"7.3.3.15 $options[‘empty’]","href":"http://book.cakephp.org/view/1405/options-empty","scanned":false,"children":[]},{"title":"7.3.3.16 $options[‘timeFormat’]","href":"http://book.cakephp.org/view/1406/options-timeFormat","scanned":false,"children":[]},{"title":"7.3.3.17 $options[‘dateFormat’]","href":"http://book.cakephp.org/view/1407/options-dateFormat","scanned":false,"children":[]},{"title":"7.3.3.18 $options['minYear'], $options['maxYear']","href":"http://book.cakephp.org/view/1408/options-minYear-options-maxYear","scanned":false,"children":[]},{"title":"7.3.3.19 $options['interval']","href":"http://book.cakephp.org/view/1409/options-interval","scanned":false,"children":[]},{"title":"7.3.3.20 $options['class']","href":"http://book.cakephp.org/view/1410/options-class","scanned":false,"children":[]},{"title":"7.3.3.21 $options['hiddenField']","href":"http://book.cakephp.org/view/1651/options-hiddenField","scanned":false,"children":[]}]},{"title":"7.3.4 File Fields","href":"http://book.cakephp.org/view/1411/File-Fields","scanned":false,"children":[{"title":"7.3.4.1 Validating Uploads","href":"http://book.cakephp.org/view/1412/Validating-Uploads","scanned":false,"children":[]}]},{"title":"7.3.5 Form Element-Specific Methods","href":"http://book.cakephp.org/view/1413/Form-Element-Specific-Methods","scanned":false,"children":[{"title":"7.3.5.1 checkbox","href":"http://book.cakephp.org/view/1414/checkbox","scanned":false,"children":[]},{"title":"7.3.5.2 button","href":"http://book.cakephp.org/view/1415/button","scanned":false,"children":[]},{"title":"7.3.5.3 year","href":"http://book.cakephp.org/view/1416/year","scanned":false,"children":[]},{"title":"7.3.5.4 month","href":"http://book.cakephp.org/view/1417/month","scanned":false,"children":[]},{"title":"7.3.5.5 dateTime","href":"http://book.cakephp.org/view/1418/dateTime","scanned":false,"children":[]},{"title":"7.3.5.6 day","href":"http://book.cakephp.org/view/1419/day","scanned":false,"children":[]},{"title":"7.3.5.7 hour","href":"http://book.cakephp.org/view/1420/hour","scanned":false,"children":[]},{"title":"7.3.5.8 minute","href":"http://book.cakephp.org/view/1421/minute","scanned":false,"children":[]},{"title":"7.3.5.9 meridian","href":"http://book.cakephp.org/view/1422/meridian","scanned":false,"children":[]},{"title":"7.3.5.10 error","href":"http://book.cakephp.org/view/1423/error","scanned":false,"children":[]},{"title":"7.3.5.11 file","href":"http://book.cakephp.org/view/1424/file","scanned":false,"children":[]},{"title":"7.3.5.12 hidden","href":"http://book.cakephp.org/view/1425/hidden","scanned":false,"children":[]},{"title":"7.3.5.13 isFieldError","href":"http://book.cakephp.org/view/1426/isFieldError","scanned":false,"children":[]},{"title":"7.3.5.14 label","href":"http://book.cakephp.org/view/1427/label","scanned":false,"children":[]},{"title":"7.3.5.15 password","href":"http://book.cakephp.org/view/1428/password","scanned":false,"children":[]},{"title":"7.3.5.16 radio","href":"http://book.cakephp.org/view/1429/radio","scanned":false,"children":[]},{"title":"7.3.5.17 select","href":"http://book.cakephp.org/view/1430/select","scanned":false,"children":[]},{"title":"7.3.5.18 submit","href":"http://book.cakephp.org/view/1431/submit","scanned":false,"children":[]},{"title":"7.3.5.19 text","href":"http://book.cakephp.org/view/1432/text","scanned":false,"children":[]},{"title":"7.3.5.20 textarea","href":"http://book.cakephp.org/view/1433/textarea","scanned":false,"children":[]}]},{"title":"7.3.6 1.3 improvements","href":"http://book.cakephp.org/view/1616/x1-3-improvements","scanned":false,"children":[]}]},{"title":"7.4 HTML","href":"http://book.cakephp.org/view/1434/HTML","scanned":false,"children":[{"title":"7.4.1 Inserting Well-Formatted elements","href":"http://book.cakephp.org/view/1435/Inserting-Well-Formatted-elements","scanned":false,"children":[{"title":"7.4.1.1 charset","href":"http://book.cakephp.org/view/1436/charset","scanned":false,"children":[]},{"title":"7.4.1.2 css","href":"http://book.cakephp.org/view/1437/css","scanned":false,"children":[]},{"title":"7.4.1.3 meta","href":"http://book.cakephp.org/view/1438/meta","scanned":false,"children":[]},{"title":"7.4.1.4 docType","href":"http://book.cakephp.org/view/1439/docType","scanned":false,"children":[]},{"title":"7.4.1.5 style","href":"http://book.cakephp.org/view/1440/style","scanned":false,"children":[]},{"title":"7.4.1.6 image","href":"http://book.cakephp.org/view/1441/image","scanned":false,"children":[]},{"title":"7.4.1.7 link","href":"http://book.cakephp.org/view/1442/link","scanned":false,"children":[]},{"title":"7.4.1.8 tag","href":"http://book.cakephp.org/view/1443/tag","scanned":false,"children":[]},{"title":"7.4.1.9 div","href":"http://book.cakephp.org/view/1444/div","scanned":false,"children":[]},{"title":"7.4.1.10 para","href":"http://book.cakephp.org/view/1445/para","scanned":false,"children":[]},{"title":"7.4.1.11 script","href":"http://book.cakephp.org/view/1589/script","scanned":false,"children":[]},{"title":"7.4.1.12 scriptBlock","href":"http://book.cakephp.org/view/1604/scriptBlock","scanned":false,"children":[]},{"title":"7.4.1.13 scriptStart","href":"http://book.cakephp.org/view/1605/scriptStart","scanned":false,"children":[]},{"title":"7.4.1.14 scriptEnd","href":"http://book.cakephp.org/view/1606/scriptEnd","scanned":false,"children":[]},{"title":"7.4.1.15 tableHeaders","href":"http://book.cakephp.org/view/1446/tableHeaders","scanned":false,"children":[]},{"title":"7.4.1.16 tableCells","href":"http://book.cakephp.org/view/1447/tableCells","scanned":false,"children":[]},{"title":"7.4.1.17 url","href":"http://book.cakephp.org/view/1448/url","scanned":false,"children":[]}]},{"title":"7.4.2 Changing the tags output by HtmlHelper","href":"http://book.cakephp.org/view/1449/Changing-the-tags-output-by-HtmlHelper","scanned":false,"children":[]},{"title":"7.4.3 Creating breadcrumb trails with HtmlHelper","href":"http://book.cakephp.org/view/1653/Creating-breadcrumb-trails-with-HtmlHelper","scanned":false,"children":[]}]},{"title":"7.5 Js","href":"http://book.cakephp.org/view/1592/Js","scanned":false,"children":[{"title":"7.5.1 Using a specific Javascript engine","href":"http://book.cakephp.org/view/1594/Using-a-specific-Javascript-engine","scanned":false,"children":[{"title":"7.5.1.1 Using the JsHelper inside customHelpers","href":"http://book.cakephp.org/view/1654/Using-the-JsHelper-inside-customHelpers","scanned":false,"children":[]}]},{"title":"7.5.2 Creating a Javascript Engine","href":"http://book.cakephp.org/view/1595/Creating-a-Javascript-Engine","scanned":false,"children":[]},{"title":"7.5.3 Javascript engine usage","href":"http://book.cakephp.org/view/1596/Javascript-engine-usage","scanned":false,"children":[{"title":"7.5.3.1 Working with buffered scripts","href":"http://book.cakephp.org/view/1599/Working-with-buffered-scripts","scanned":false,"children":[]}]},{"title":"7.5.4 Methods","href":"http://book.cakephp.org/view/1593/Methods","scanned":false,"children":[]},{"title":"7.5.5 Ajax Pagination","href":"http://book.cakephp.org/view/1600/Ajax-Pagination","scanned":false,"children":[{"title":"7.5.5.1 Making Ajax Links","href":"http://book.cakephp.org/view/1601/Making-Ajax-Links","scanned":false,"children":[]}]}]},{"title":"7.6 Javascript","href":"http://book.cakephp.org/view/1450/Javascript","scanned":false,"children":[{"title":"7.6.1 Methods","href":"http://book.cakephp.org/view/1451/Methods","scanned":false,"children":[]}]},{"title":"7.7 Number","href":"http://book.cakephp.org/view/1452/Number","scanned":false,"children":[{"title":"7.7.1 currency","href":"http://book.cakephp.org/view/1453/currency","scanned":false,"children":[]},{"title":"7.7.2 precision","href":"http://book.cakephp.org/view/1454/precision","scanned":false,"children":[]},{"title":"7.7.3 toPercentage","href":"http://book.cakephp.org/view/1455/toPercentage","scanned":false,"children":[]},{"title":"7.7.4 toReadableSize","href":"http://book.cakephp.org/view/1456/toReadableSize","scanned":false,"children":[]},{"title":"7.7.5 format","href":"http://book.cakephp.org/view/1457/format","scanned":false,"children":[]}]},{"title":"7.8 Paginator","href":"http://book.cakephp.org/view/1458/Paginator","scanned":false,"children":[{"title":"7.8.1 Methods","href":"http://book.cakephp.org/view/1459/Methods","scanned":false,"children":[]}]},{"title":"7.9 RSS","href":"http://book.cakephp.org/view/1460/RSS","scanned":false,"children":[{"title":"7.9.1 Creating an RSS feed with the RssHelper","href":"http://book.cakephp.org/view/1461/Creating-an-RSS-feed-with-the-RssHelper","scanned":false,"children":[{"title":"7.9.1.1 Controller Code","href":"http://book.cakephp.org/view/1462/Controller-Code","scanned":false,"children":[{"title":"7.9.1.1.1 Layout","href":"http://book.cakephp.org/view/1463/Layout","scanned":false,"children":[]},{"title":"7.9.1.1.2 View","href":"http://book.cakephp.org/view/1464/View","scanned":false,"children":[]}]}]}]},{"title":"7.10 Session","href":"http://book.cakephp.org/view/1465/Session","scanned":false,"children":[{"title":"7.10.1 Methods","href":"http://book.cakephp.org/view/1466/Methods","scanned":false,"children":[]},{"title":"7.10.2 flash","href":"http://book.cakephp.org/view/1467/flash","scanned":false,"children":[]}]},{"title":"7.11 Text","href":"http://book.cakephp.org/view/1469/Text","scanned":false,"children":[]},{"title":"7.12 Time","href":"http://book.cakephp.org/view/1470/Time","scanned":false,"children":[{"title":"7.12.1 Formatting","href":"http://book.cakephp.org/view/1471/Formatting","scanned":false,"children":[]},{"title":"7.12.2 Testing Time","href":"http://book.cakephp.org/view/1472/Testing-Time","scanned":false,"children":[]}]},{"title":"7.13 XML","href":"http://book.cakephp.org/view/1473/XML","scanned":false,"children":[{"title":"7.13.1 serialize","href":"http://book.cakephp.org/view/1474/serialize","scanned":false,"children":[]},{"title":"7.13.2 elem","href":"http://book.cakephp.org/view/1475/elem","scanned":false,"children":[]},{"title":"7.13.3 header","href":"http://book.cakephp.org/view/1476/header","scanned":false,"children":[]}]}]},{"title":"8 Core Utility Libraries","href":"http://book.cakephp.org/view/1477/Core-Utility-Libraries","scanned":false,"children":[{"title":"8.1 App","href":"http://book.cakephp.org/view/1644/App","scanned":false,"children":[]},{"title":"8.2 Inflector","href":"http://book.cakephp.org/view/1478/Inflector","scanned":false,"children":[{"title":"8.2.1 Class methods","href":"http://book.cakephp.org/view/1479/Class-methods","scanned":false,"children":[]}]},{"title":"8.3 String","href":"http://book.cakephp.org/view/1480/String","scanned":false,"children":[{"title":"8.3.1 uuid","href":"http://book.cakephp.org/view/1481/uuid","scanned":false,"children":[]},{"title":"8.3.2 tokenize","href":"http://book.cakephp.org/view/1482/tokenize","scanned":false,"children":[]},{"title":"8.3.3 insert","href":"http://book.cakephp.org/view/1483/insert","scanned":false,"children":[]},{"title":"8.3.4 cleanInsert","href":"http://book.cakephp.org/view/1484/cleanInsert","scanned":false,"children":[]}]},{"title":"8.4 Xml","href":"http://book.cakephp.org/view/1485/Xml","scanned":false,"children":[{"title":"8.4.1 Xml parsing","href":"http://book.cakephp.org/view/1486/Xml-parsing","scanned":false,"children":[]}]},{"title":"8.5 Set","href":"http://book.cakephp.org/view/1487/Set","scanned":false,"children":[{"title":"8.5.1 Set-compatible Path syntax","href":"http://book.cakephp.org/view/1488/Set-compatible-Path-syntax","scanned":false,"children":[]},{"title":"8.5.2 insert","href":"http://book.cakephp.org/view/1489/insert","scanned":false,"children":[]},{"title":"8.5.3 sort","href":"http://book.cakephp.org/view/1490/sort","scanned":false,"children":[]},{"title":"8.5.4 reverse","href":"http://book.cakephp.org/view/1491/reverse","scanned":false,"children":[]},{"title":"8.5.5 combine","href":"http://book.cakephp.org/view/1492/combine","scanned":false,"children":[]},{"title":"8.5.6 normalize","href":"http://book.cakephp.org/view/1493/normalize","scanned":false,"children":[]},{"title":"8.5.7 countDim","href":"http://book.cakephp.org/view/1494/countDim","scanned":false,"children":[]},{"title":"8.5.8 diff","href":"http://book.cakephp.org/view/1496/diff","scanned":false,"children":[]},{"title":"8.5.9 check","href":"http://book.cakephp.org/view/1497/check","scanned":false,"children":[]},{"title":"8.5.10 remove","href":"http://book.cakephp.org/view/1498/remove","scanned":false,"children":[]},{"title":"8.5.11 classicExtract","href":"http://book.cakephp.org/view/1499/classicExtract","scanned":false,"children":[]},{"title":"8.5.12 matches","href":"http://book.cakephp.org/view/1500/matches","scanned":false,"children":[]},{"title":"8.5.13 extract","href":"http://book.cakephp.org/view/1501/extract","scanned":false,"children":[]},{"title":"8.5.14 format","href":"http://book.cakephp.org/view/1502/format","scanned":false,"children":[]},{"title":"8.5.15 enum","href":"http://book.cakephp.org/view/1503/enum","scanned":false,"children":[]},{"title":"8.5.16 numeric","href":"http://book.cakephp.org/view/1504/numeric","scanned":false,"children":[]},{"title":"8.5.17 map","href":"http://book.cakephp.org/view/1505/map","scanned":false,"children":[]},{"title":"8.5.18 pushDiff","href":"http://book.cakephp.org/view/1506/pushDiff","scanned":false,"children":[]},{"title":"8.5.19 filter","href":"http://book.cakephp.org/view/1507/filter","scanned":false,"children":[]},{"title":"8.5.20 merge","href":"http://book.cakephp.org/view/1508/merge","scanned":false,"children":[]},{"title":"8.5.21 contains","href":"http://book.cakephp.org/view/1509/contains","scanned":false,"children":[]}]},{"title":"8.6 Security","href":"http://book.cakephp.org/view/1510/Security","scanned":false,"children":[]},{"title":"8.7 Cache","href":"http://book.cakephp.org/view/1511/Cache","scanned":false,"children":[{"title":"8.7.1 Cache::read()","href":"http://book.cakephp.org/view/1512/Cache-read","scanned":false,"children":[]},{"title":"8.7.2 Cache::write()","href":"http://book.cakephp.org/view/1513/Cache-write","scanned":false,"children":[]},{"title":"8.7.3 Cache::delete()","href":"http://book.cakephp.org/view/1514/Cache-delete","scanned":false,"children":[]},{"title":"8.7.4 Cache::config()","href":"http://book.cakephp.org/view/1515/Cache-config","scanned":false,"children":[]},{"title":"8.7.5 Cache::set()","href":"http://book.cakephp.org/view/1516/Cache-set","scanned":false,"children":[]}]},{"title":"8.8 HttpSocket","href":"http://book.cakephp.org/view/1517/HttpSocket","scanned":false,"children":[{"title":"8.8.1 get","href":"http://book.cakephp.org/view/1518/get","scanned":false,"children":[]},{"title":"8.8.2 post","href":"http://book.cakephp.org/view/1519/post","scanned":false,"children":[]},{"title":"8.8.3 request","href":"http://book.cakephp.org/view/1520/request","scanned":false,"children":[]}]},{"title":"8.9 Router","href":"http://book.cakephp.org/view/1649/Router","scanned":false,"children":[]}]},{"title":"9 Core Console Applications","href":"http://book.cakephp.org/view/1521/Core-Console-Applications","scanned":false,"children":[{"title":"9.1 Code Generation with Bake","href":"http://book.cakephp.org/view/1522/Code-Generation-with-Bake","scanned":false,"children":[{"title":"9.1.1 Bake improvements in 1.3","href":"http://book.cakephp.org/view/1611/Bake-improvements-in-1-3","scanned":false,"children":[]}]},{"title":"9.2 Schema management and migrations","href":"http://book.cakephp.org/view/1523/Schema-management-and-migrations","scanned":false,"children":[{"title":"9.2.1 Generating and using Schema files","href":"http://book.cakephp.org/view/1524/Generating-and-using-Schema-files","scanned":false,"children":[]},{"title":"9.2.2 Migrations with CakePHP schema shell","href":"http://book.cakephp.org/view/1525/Migrations-with-CakePHP-schema-shell","scanned":false,"children":[]}]},{"title":"9.3 Modify default HTML produced by \"baked\" templates","href":"http://book.cakephp.org/view/1526/Modify-default-HTML-produced-by-baked-templates","scanned":false,"children":[]}]},{"title":"10 Deployment","href":"http://book.cakephp.org/view/1645/Deployment","scanned":false,"children":[]},{"title":"11 Tutorials & Examples","href":"http://book.cakephp.org/view/1527/Tutorials-Examples","scanned":false,"children":[{"title":"11.1 Blog","href":"http://book.cakephp.org/view/1528/Blog","scanned":false,"children":[{"title":"11.1.1 Getting Cake","href":"http://book.cakephp.org/view/1529/Getting-Cake","scanned":false,"children":[]},{"title":"11.1.2 Creating the Blog Database","href":"http://book.cakephp.org/view/1530/Creating-the-Blog-Database","scanned":false,"children":[]},{"title":"11.1.3 Cake Database Configuration","href":"http://book.cakephp.org/view/1531/Cake-Database-Configuration","scanned":false,"children":[]},{"title":"11.1.4 Optional Configuration","href":"http://book.cakephp.org/view/1532/Optional-Configuration","scanned":false,"children":[]},{"title":"11.1.5 A Note on mod_rewrite","href":"http://book.cakephp.org/view/1533/A-Note-on-mod_rewrite","scanned":false,"children":[]},{"title":"11.1.6 Create a Post Model","href":"http://book.cakephp.org/view/1534/Create-a-Post-Model","scanned":false,"children":[]},{"title":"11.1.7 Create a Posts Controller","href":"http://book.cakephp.org/view/1535/Create-a-Posts-Controller","scanned":false,"children":[]},{"title":"11.1.8 Creating Post Views","href":"http://book.cakephp.org/view/1536/Creating-Post-Views","scanned":false,"children":[]},{"title":"11.1.9 Adding Posts","href":"http://book.cakephp.org/view/1537/Adding-Posts","scanned":false,"children":[]},{"title":"11.1.10 Data Validation","href":"http://book.cakephp.org/view/1538/Data-Validation","scanned":false,"children":[]},{"title":"11.1.11 Deleting Posts","href":"http://book.cakephp.org/view/1539/Deleting-Posts","scanned":false,"children":[]},{"title":"11.1.12 Editing Posts","href":"http://book.cakephp.org/view/1540/Editing-Posts","scanned":false,"children":[]},{"title":"11.1.13 Routes","href":"http://book.cakephp.org/view/1541/Routes","scanned":false,"children":[]},{"title":"11.1.14 Conclusion","href":"http://book.cakephp.org/view/1542/Conclusion","scanned":false,"children":[]}]},{"title":"11.2 Simple Acl controlled Application","href":"http://book.cakephp.org/view/1543/Simple-Acl-controlled-Application","scanned":false,"children":[{"title":"11.2.1 Preparing our Application","href":"http://book.cakephp.org/view/1544/Preparing-our-Application","scanned":false,"children":[]},{"title":"11.2.2 Preparing to Add Auth","href":"http://book.cakephp.org/view/1545/Preparing-to-Add-Auth","scanned":false,"children":[]},{"title":"11.2.3 Initialize the Db Acl tables","href":"http://book.cakephp.org/view/1546/Initialize-the-Db-Acl-tables","scanned":false,"children":[]},{"title":"11.2.4 Acts As a Requester","href":"http://book.cakephp.org/view/1547/Acts-As-a-Requester","scanned":false,"children":[]},{"title":"11.2.5 Creating ACOs (Access Control Objects)","href":"http://book.cakephp.org/view/1548/Creating-ACOs-Access-Control-Objects","scanned":false,"children":[]},{"title":"11.2.6 An Automated tool for creating ACOs","href":"http://book.cakephp.org/view/1549/An-Automated-tool-for-creating-ACOs","scanned":false,"children":[]},{"title":"11.2.7 Setting up permissions","href":"http://book.cakephp.org/view/1550/Setting-up-permissions","scanned":false,"children":[]},{"title":"11.2.8 Logging in","href":"http://book.cakephp.org/view/1551/Logging-in","scanned":false,"children":[]},{"title":"11.2.9 Logout","href":"http://book.cakephp.org/view/1552/Logout","scanned":false,"children":[]},{"title":"11.2.10 All done","href":"http://book.cakephp.org/view/1553/All-done","scanned":false,"children":[]}]}]},{"title":"12 Appendices","href":"http://book.cakephp.org/view/1554/Appendices","scanned":false,"children":[{"title":"12.1 Migrating from CakePHP 1.2 to 1.3","href":"http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3","scanned":false,"children":[]},{"title":"12.2 New features in CakePHP 1.3","href":"http://book.cakephp.org/view/1572/New-features-in-CakePHP-1-3","scanned":false,"children":[]}]}]
Jump to Line
Something went wrong with that request. Please try again.