Manual Cakephp-1 3 x

Embed Size (px)

Citation preview

  • Manual CakePHP

    Ver. 1.3.x

    Fuente:

    http://book.cakephp.org

    Compilador por:

    Ing. Luis Diaz

    Agosto de 2010

  • ndice de contenidoManual CakePHP.......................................................................................................................................1

    1 Comenzando con CakePHP..............................................................................................................181.1 Qu es CakePHP y por qu hay que utilizarlo?......................................................................181.2 Dnde obtener ayuda................................................................................................................191.3 Entendiendo Modelo-Vista-Controlador..................................................................................21

    2 Principios bsicos de CakePHP........................................................................................................232.1 Estructura de CakePHP.............................................................................................................23

    2.1.1 Extensiones de los Controladores ("Componentes")........................................................232.1.2 Extensiones de las Vistas..................................................................................................242.1.3 Extensiones de los Modelos..............................................................................................242.1.4 Extensiones de la Aplicacin............................................................................................25

    2.2 Una peticin tpica de CakePHP...............................................................................................252.3 Estructura de archivos de CakePHP.........................................................................................282.4 Convenciones de CakePHP .....................................................................................................30

    2.4.1 Convenciones de los nombres de archivos y clases..........................................................302.4.2 Convenciones de Modelo y de la Base de datos...............................................................302.4.3 Convenciones de Controladores.......................................................................................31

    2.4.3.1 Consideraciones de URL para nombres de controladores.........................................322.4.4 Convenciones de Vistas....................................................................................................33

    3 Desarrollando con CakePHP............................................................................................................343.1 Requerimientos.........................................................................................................................343.2 Preparndose para Instalar........................................................................................................34

    3.2.1 Obteniendo CakePHP.......................................................................................................353.2.2 Permisos............................................................................................................................35

    3.3 Instalacin.................................................................................................................................353.3.1 Desarrollo..........................................................................................................................363.3.2 Produccin........................................................................................................................363.3.3 Instalacin Avanzada.........................................................................................................37

    3.3.3.1 Rutas de Clase Adicionales.......................................................................................383.3.4 Apache y mod_rewrite (y .htaccess).................................................................................393.3.5 Lighttpd y mod_magne.....................................................................................................413.3.6 Pretty URLs en nginx........................................................................................................423.3.7 URL Rewrites on IIS7 (Windows hosts)...........................................................................433.3.8 Encindelo.........................................................................................................................44

    3.4 Configuracin...........................................................................................................................453.4.1 Configuracin de Base de Datos.......................................................................................453.4.2 Configuracin del Core.....................................................................................................463.4.3 La Clase de Configuracin................................................................................................46

    3.4.3.1 Mtodos de la Clase Configure.................................................................................473.4.3.1.1 write...................................................................................................................473.4.3.1.2 read....................................................................................................................473.4.3.1.3 delete..................................................................................................................483.4.3.1.4 load....................................................................................................................483.4.3.1.5 version...............................................................................................................48

    3.4.3.2 Variables de Configuracin Principales de CakePHP...............................................483.4.3.3 Constantes de Configuracin....................................................................................50

  • 3.4.4 La Clase App.....................................................................................................................503.4.4.1 Usando App::import()...............................................................................................503.4.4.2 Importando libreras del Core...................................................................................503.4.4.3 Importando Controladores, Modelos, Ayudantes, Comportamientos y Componentes...............................................................................................................................................51

    3.4.4.3.2 Cargando Modelos [Model]...............................................................................513.4.4.3.3 Cargando Componentes [Components].............................................................513.4.4.3.4 Cargando Comportamientos [Behaviors]..........................................................513.4.4.3.5 Cargando Ayudantes[Helpers]...........................................................................51

    3.4.4.4 Cargando desde Plugins............................................................................................513.4.4.5 Cargando Archivos de Terceros.................................................................................52

    3.4.4.5.1 Ejemplos de archivos de terceros......................................................................523.4.5 Configuracin de Rutas.....................................................................................................52

    Enrutamiento por Defecto.....................................................................................................52Parmetros con Nombre.............................................................................................................53Definir Rutas..............................................................................................................................53Pasando parmetros a la accin.................................................................................................56Rutas con prefijos......................................................................................................................57

    3.4.5.1 Enrutamiento por defecto..........................................................................................583.4.5.2 Passed arguments......................................................................................................583.4.5.4 Defining Routes.........................................................................................................593.4.5.5 Pasando parmetros a las acciones............................................................................623.4.5.6 Prefix Routing...........................................................................................................623.4.5.7 Rutas y plugins..........................................................................................................633.4.5.8 Extensiones de archivo..............................................................................................643.4.5.9 Custom Route classes................................................................................................64

    3.4.6 Inflexiones Propias............................................................................................................653.4.7 Haciendo Bootstrap de CakePHP.....................................................................................66

    3.5 Controladores............................................................................................................................673.5.1 The App Controller...........................................................................................................683.5.2 The Pages Controller.........................................................................................................683.5.3 Atributos del Controlador.................................................................................................69

    3.5.3.1 $name........................................................................................................................693.5.3.2 $components, $helpers y $uses.................................................................................693.5.3.3 Atributos Relacionados con la Pgina: "$layout" y "$pageTitle".............................703.5.3.4 El Atributo de Parmetros ("$params").....................................................................71

    3.5.3.4.1 form...................................................................................................................713.5.3.4.2 admin.................................................................................................................713.5.3.4.4 isAjax.................................................................................................................713.5.3.4.5 controller............................................................................................................723.5.3.4.6 action.................................................................................................................723.5.3.4.7 pass....................................................................................................................723.5.3.4.8 url ......................................................................................................................723.5.3.4.9 data....................................................................................................................723.5.3.4.10 prefix................................................................................................................733.5.3.4.11 named...............................................................................................................73

    3.5.3.5 Otros Atributos..........................................................................................................733.5.3.6 persistModel..............................................................................................................74

    3.5.4 Mtodos del Controlador..................................................................................................75

  • 3.5.4.1 Interactuando con Vistas...........................................................................................753.5.4.1.1 set.......................................................................................................................753.5.4.1.2 render.................................................................................................................75

    3.5.4.2 Control de Flujo........................................................................................................763.5.4.2.1 redirect...............................................................................................................763.5.4.2.2 flash...................................................................................................................77

    3.5.4.3 Retrollamadas ("Callbacks").....................................................................................773.5.4.4 Otros Mtodos tiles................................................................................................78

    3.5.4.4.1 constructClasses................................................................................................783.5.4.4.2 referer................................................................................................................793.5.4.4.3 disableCache......................................................................................................793.5.4.4.4 postConditions...................................................................................................793.5.4.4.5 paginate..............................................................................................................803.5.4.4.6 requestAction.....................................................................................................803.5.4.4.7 loadModel..........................................................................................................82

    3.6 Componentes............................................................................................................................833.6.1 Configuracin de componentes.........................................................................................833.6.2 Creando Componentes a medida......................................................................................84

    3.6.2.1 Aadiendo Componentes a tus Controladores..........................................................843.6.2.2 Acceso a clases MVC dentro de componentes..........................................................853.6.2.3 Usando Componentes en tu Componente.................................................................86

    3.7 Modelos....................................................................................................................................883.7.1 La Comprensin de Modelos............................................................................................883.7.2 Creando Tablas de Bases de Datos...................................................................................90

    3.7.2.1 Asociaciones de Tipo de Dato por Base de Datos.....................................................913.7.2.1.1 MySQL..............................................................................................................913.7.2.1.2 MySQLi.............................................................................................................913.7.2.1.3 ADOdb...............................................................................................................923.7.2.1.4 DB2....................................................................................................................923.7.2.1.5 Firebird/Interbase..............................................................................................923.7.2.1.6 MS SQL.............................................................................................................933.7.2.1.7 Oracle................................................................................................................933.7.2.1.8 PostgreSQL........................................................................................................943.7.2.1.9 SQLite................................................................................................................943.7.2.1.10 Sybase..............................................................................................................94

    3.7.2.2 Titulos........................................................................................................................953.7.2.3 Creado y modificado ("created" y "modified").........................................................953.7.2.4 Utilizando UUIDs como Claves Primarias...............................................................95

    3.7.3 Recuperando tus Datos.....................................................................................................963.7.3.1 find............................................................................................................................96

    3.7.3.1.1 find('first')..........................................................................................................973.7.3.1.2 find('count')........................................................................................................983.7.3.1.3 find('all').............................................................................................................983.7.3.1.4 find('list')............................................................................................................993.7.3.1.5 find('threaded').................................................................................................1013.7.3.1.6 find('neighbors')...............................................................................................103

    3.7.3.2 findAllBy.................................................................................................................1043.7.3.3 findBy......................................................................................................................1043.7.3.4 query........................................................................................................................105

  • 3.7.3.5 field..........................................................................................................................1063.7.3.6 read().......................................................................................................................1063.7.3.7 Condiciones Complejas de Bsqueda.....................................................................107

    3.7.4 Guardando Tus Datos......................................................................................................1103.7.4.1 Guardando Datos de Modelos Relacionados (hasOne, hasMany, belongsTo)........114

    3.7.4.1.1 counterCache - Cache your count().................................................................1163.7.4.2 Guardando Datos de Modelos Relacionados (HABTM)........................................117

    3.7.5 Borrando Datos...............................................................................................................1183.7.5.1 del............................................................................................................................1183.7.5.2 deleteAll..................................................................................................................118

    3.7.6 Asociaciones: Enlazando Modelos..................................................................................1183.7.6.1 Tipos de Relaciones.................................................................................................1193.7.6.2 hasOne.....................................................................................................................1203.7.6.3 belongsTo................................................................................................................1223.7.6.4 hasMany..................................................................................................................1243.7.6.5 hasAndBelongsToMany (HABTM)........................................................................1263.7.6.6 Creando y Destruyendo Asociaciones al Vuelo......................................................1323.7.6.7 Mltiples relaciones al mismo modelo....................................................................1343.7.6.8 Joining tables...........................................................................................................135

    3.7.7 Mtodos Callback...........................................................................................................1373.7.7.1 beforeFind...............................................................................................................1373.7.7.2 afterFind..................................................................................................................1373.7.7.3 beforeValidate..........................................................................................................1383.7.7.4 beforeSave...............................................................................................................1393.7.7.5 afterSave..................................................................................................................1393.7.7.6 beforeDelete............................................................................................................1403.7.7.7 afterDelete...............................................................................................................1403.7.7.8 onError....................................................................................................................140

    3.7.8 Atributos del Modelo......................................................................................................1403.7.8.1 useDbConfig............................................................................................................1403.7.8.2 useTable...................................................................................................................1413.7.8.3 tablePrefix...............................................................................................................1413.7.8.4 primaryKey..............................................................................................................1423.7.8.5 displayField.............................................................................................................1423.7.8.6 recursive..................................................................................................................1423.7.8.7 order........................................................................................................................1433.7.8.8 data..........................................................................................................................1433.7.8.9 _schema...................................................................................................................1433.7.8.10 validate..................................................................................................................1443.7.8.11 virtualFields...........................................................................................................1443.7.8.12 name......................................................................................................................1443.7.8.13 cacheQueries.........................................................................................................144

    3.7.9 Mtodos Personalizados y Propiedades..........................................................................1453.7.9.1 Using virtualFields..................................................................................................145

    3.7.10 Virtual fields..................................................................................................................1473.7.10.1 Creating virtual fields............................................................................................1473.7.10.2 Using virtual fields................................................................................................1483.7.10.3 Virtual fields and model aliases.............................................................................1493.7.10.4 Limitations of virtualFields...................................................................................149

  • 3.7.11 Transactions..................................................................................................................1503.8 Comportamientos....................................................................................................................150

    3.8.1 Utilizando Comportamientos..........................................................................................1513.8.2 Creando Comportamientos Personalizados....................................................................1533.8.3 Creating behavior methods.............................................................................................1533.8.4 Behavior callbacks..........................................................................................................1543.8.5 Creating a behavior callback...........................................................................................154

    3.9 DataSources (fuentes de datos)...............................................................................................1553.9.1 API bsica para DataSources..........................................................................................1563.9.2 Un ejemplo......................................................................................................................157

    3.10 Vistas.....................................................................................................................................1603.10.1 Plantillas de la Vista......................................................................................................1603.10.2 Layouts..........................................................................................................................1603.10.3 Elementos......................................................................................................................163

    3.10.3.1 Pasar Variables a un elemento...............................................................................1633.10.3.2 Cache de Elements................................................................................................1653.10.3.3 Utilizar Elements de un Plugin..............................................................................165

    3.10.4 Mtodos de la vista.......................................................................................................1653.10.4.1 set()........................................................................................................................1663.10.4.2 getVar()..................................................................................................................1663.10.4.3 getVars()................................................................................................................1663.10.4.4 error()....................................................................................................................1663.10.4.5 element()................................................................................................................1663.10.4.6 uuid........................................................................................................................1673.10.4.7 addScript().............................................................................................................167

    3.10.5 Temas............................................................................................................................1673.10.5.1 Increasing performance of plugin and theme assets..............................................168

    3.10.6 Vistas de Medios...........................................................................................................1693.11 Helpers..................................................................................................................................170

    3.11.1 Usando Helpers.............................................................................................................1703.11.2 Creando Helpers............................................................................................................170

    3.11.2.1 Including other Helpers.........................................................................................1713.11.2.2 Callback method....................................................................................................1723.11.2.3 Usando tu Helper...................................................................................................172

    3.11.3 Creando Funcionalidad para todos los Helpers.............................................................1723.11.4 Helpers del Core............................................................................................................173

    3.12 Scaffolding............................................................................................................................1743.12.1 Creating a simple admin interface with scaffolding.....................................................1753.12.2 Personalizando Vistas Scaffold ....................................................................................176

    3.13 La consola de CakePHP........................................................................................................1773.13.1 Creando Shells y Tasks.................................................................................................178

    3.13.1.1 Creando tus Propios Shells....................................................................................1783.13.1.2 Tasks (Tareas)........................................................................................................180

    3.13.2 Running Shells as cronjobs...........................................................................................1813.14 Plugins..................................................................................................................................182

    3.14.1 Crear un Plugin.............................................................................................................1833.14.2 Controladores del Plugin...............................................................................................1833.14.3 Modelos del Plugin.......................................................................................................1843.14.4 Vistas del Plugin............................................................................................................185

  • 3.14.5 Componentes, Ayudantes y Comportamientos.............................................................1853.14.6 CSS y Javascript en los Plugins....................................................................................1863.14.7 Consejos para desarrollar Plugins.................................................................................186

    3.15 Constantes y Funciones Globales.........................................................................................1873.15.1 Funciones globales........................................................................................................187

    3.15.1.1 __...........................................................................................................................1873.15.1.2 a.............................................................................................................................1883.15.1.3 aa...........................................................................................................................1883.15.1.4 am..........................................................................................................................1883.15.1.5 config.....................................................................................................................1883.15.1.6 convertSlash..........................................................................................................1893.15.1.7 debug.....................................................................................................................1893.15.1.8 e.............................................................................................................................1893.15.1.9 env.........................................................................................................................1893.15.1.10 fileExistsInPath...................................................................................................1893.15.1.11 h...........................................................................................................................1903.15.1.12 ife.........................................................................................................................1903.15.1.13 low.......................................................................................................................1903.15.1.14 pr..........................................................................................................................1903.15.1.15 r............................................................................................................................1903.15.1.16 stripslashes_deep.................................................................................................1903.15.1.17 up.........................................................................................................................1903.15.1.18 uses......................................................................................................................191

    3.15.2 Constantes predefinidas................................................................................................1913.16 Paquetes de terceros (Vendor packages)...............................................................................192

    3.16.1 Vendor assets.................................................................................................................1924 Tareas comunes con CakePHP.......................................................................................................193

    4.1 Validacin de Datos................................................................................................................1934.1.1 Reglas Simples................................................................................................................1954.1.2 Una regla por campo.......................................................................................................195

    4.1.2.1 rule...........................................................................................................................1964.1.2.2 required....................................................................................................................1964.1.2.3 allowEmpty.............................................................................................................1974.1.2.4 on.............................................................................................................................1974.1.2.5 message...................................................................................................................197

    4.1.3 Mltiples Reglas por Campo..........................................................................................1984.1.4 Reglas de Validacin Incorporadas.................................................................................200

    4.1.4.1 alphaNumeric..........................................................................................................2004.1.4.2 between....................................................................................................................2004.1.4.3 blank........................................................................................................................2004.1.4.4 boolean....................................................................................................................2014.1.4.5 cc.............................................................................................................................2014.1.4.6 comparison..............................................................................................................2024.1.4.7 date..........................................................................................................................2034.1.4.8 decimal....................................................................................................................2034.1.4.9 email........................................................................................................................2044.1.4.10 equalTo..................................................................................................................2044.1.4.11 extension................................................................................................................2044.1.4.12 file..........................................................................................................................205

  • 4.1.4.13 ip............................................................................................................................2054.1.4.14 isUnique................................................................................................................2054.1.4.15 minLength.............................................................................................................2064.1.4.16 maxLength.............................................................................................................2064.1.4.17 money....................................................................................................................2064.1.4.18 multiple..................................................................................................................2074.1.4.19 inList......................................................................................................................2074.1.4.20 numeric..................................................................................................................2074.1.4.21 notEmpty...............................................................................................................2084.1.4.22 phone.....................................................................................................................2084.1.4.23 postal.....................................................................................................................2084.1.4.24 range......................................................................................................................2094.1.4.25 ssn..........................................................................................................................2094.1.4.26 url..........................................................................................................................209

    4.1.5 Reglas de Validacin Personalizadas..............................................................................2104.1.5.1 Validacin Personalizada Mediante Expresiones Relugares...................................2104.1.5.2 Validacin Mediante Mtodos Personalizados........................................................210

    4.1.6 Validando datos desde el Controlador.............................................................................2114.2 Limpieza de Datos..................................................................................................................212

    4.2.1 paranoid...........................................................................................................................2124.2.2 html.................................................................................................................................2124.2.3 escape..............................................................................................................................2134.2.4 clean................................................................................................................................213

    4.3 Manejo de Errores...................................................................................................................2144.4 Depuracin..............................................................................................................................215

    4.4.1 Depuracin bsica...........................................................................................................2154.4.2 Usando la clase Debugger...............................................................................................2164.4.3 Clase Debugger...............................................................................................................218

    4.5 Caching...................................................................................................................................2194.6 Logging...................................................................................................................................219

    4.6.1 Uso de la funcin log......................................................................................................2194.6.2 Using the default FileLog class.......................................................................................2204.6.3 Creating and configuring log streams.............................................................................2214.6.4 Interacting with log streams............................................................................................2224.6.5 Error logging...................................................................................................................222

    4.7 Testing.....................................................................................................................................2224.7.1 Preparndose para el testing............................................................................................222

    4.7.1.1 Installing SimpleTest...............................................................................................2234.7.1.2 Ejecutando los test-cases incorporados...................................................................223

    4.7.2 Introduccin a los test - Unit testing vs. Web testing......................................................2244.7.3 Preparando datos de prueba............................................................................................224

    4.7.3.1 Acerca de las fixtures..............................................................................................2244.7.3.2 Creando fixtures......................................................................................................2244.7.3.3 Importar informacin de tabla y registros...............................................................226

    4.7.4 Creando los tests.............................................................................................................2284.7.4.1 CakeTestCase Callback Methods............................................................................229

    4.7.5 Testing models................................................................................................................2294.7.5.1 Creating a test case..................................................................................................2294.7.5.2 Creating a test method.............................................................................................231

  • 4.7.6 Testing controllers...........................................................................................................2314.7.6.1 Creando un test case................................................................................................2314.7.6.2 El mtodo testAction...............................................................................................2334.7.6.3 Pitfalls......................................................................................................................234

    4.7.7 Testing Helpers...............................................................................................................2344.7.7.1 Creating Helper test, part I......................................................................................234

    4.7.8 Probando componentes...................................................................................................2354.7.8.1 Initializing the component.......................................................................................2364.7.8.2 Creando un mtodo de prueba.................................................................................236

    4.7.9 Web testing - Testeando las vistas...................................................................................2374.7.9.1 About CakeWebTestCase........................................................................................2374.7.9.2 Creando un test........................................................................................................2374.7.9.3 Walking through a page...........................................................................................238

    4.7.10 Testing plugins..............................................................................................................2394.7.11 Miscellaneous................................................................................................................240

    4.7.11.1 Customizing the test reporter................................................................................2404.7.11.2 Test Reporter methods...........................................................................................2404.7.11.3 Grouping tests........................................................................................................241

    4.7.12 Running tests in the Command Line.............................................................................2424.7.13 Test Suite changes in 1.3...............................................................................................243

    4.8 Internacionalizacin & Localizacin......................................................................................2454.8.1 Internacionalizando su aplicacin...................................................................................2454.8.2 Localizacin en CakePHP...............................................................................................246

    4.9 Paginacin...............................................................................................................................2484.9.1 Preparacin del controlador............................................................................................2484.9.2 Pagination in Views........................................................................................................2504.9.3 Paginacin AJAX............................................................................................................251

    # Configuring the PaginatorHelper to use a custom helper................................................2524.9.4 Custom Query Pagination...............................................................................................252

    4.10 REST....................................................................................................................................2534.10.1 The Simple Setup..........................................................................................................2544.10.2 Custom REST Routing..................................................................................................256

    5 Componentes del Ncleo................................................................................................................2575.1 Listas de Control de Acceso...................................................................................................257

    5.1.1 Entendiendo cmo funciona ACL...................................................................................2585.1.2 Definiendo Permisos: ACL basado en INI......................................................................2635.1.3 Definiendo Permisos: ACL en la base de datos..............................................................265

    5.1.3.1 Comenzando............................................................................................................2655.1.3.2 Creando Access Request Objects (AROs) y Access Control Objects (ACOs).......2665.1.3.3 Asignando Permisos................................................................................................2725.1.3.4 Verificando Permisos: El Componente ACL...........................................................274

    5.2 Autenticacin..........................................................................................................................2755.2.1 Configurando las variables del componente Auth..........................................................2775.2.2 Mostrando Mensajes de Error en la Autenticacin.........................................................2785.2.3 Problemas comunes con Auth.........................................................................................2785.2.4 Cambiar la Funcin Hash................................................................................................2795.2.5 Mtodos de AuthComponent..........................................................................................280

    5.2.5.1 action.......................................................................................................................2805.2.5.2 allow........................................................................................................................280

  • 5.2.5.3 deny.........................................................................................................................2815.2.5.4 hashPasswords.........................................................................................................2815.2.5.5 mapActions..............................................................................................................2825.2.5.6 login.........................................................................................................................2825.2.5.7 logout.......................................................................................................................2835.2.5.8 password..................................................................................................................2835.2.5.9 user..........................................................................................................................284

    5.2.6 Atributos de AuthComponent.........................................................................................2855.2.6.1 userModel................................................................................................................2855.2.6.2 fields........................................................................................................................2855.2.6.3 userScope................................................................................................................2855.2.6.4 loginAction..............................................................................................................2855.2.6.5 loginRedirect...........................................................................................................2865.2.6.6 logoutRedirect.........................................................................................................2865.2.6.7 loginError................................................................................................................2865.2.6.8 authError..................................................................................................................2865.2.6.9 autoRedirect............................................................................................................2875.2.6.10 authorize................................................................................................................2885.2.6.11 sessionKey.............................................................................................................2905.2.6.12 ajaxLogin...............................................................................................................2905.2.6.13 authenticate............................................................................................................2905.2.6.14 actionPath..............................................................................................................2905.2.6.15 flashElement..........................................................................................................290

    5.3 Cookies...................................................................................................................................2915.3.1 Configuracin del Controlador.......................................................................................2915.3.2 Utilizando el Componente..............................................................................................292

    5.4 Email.......................................................................................................................................2945.4.1 Atributos y Variables de la clase.....................................................................................294

    5.4.1.1 Envo mltiple de emails en bucle..........................................................................2955.4.1.2 Debugging Emails...................................................................................................295

    5.4.2 Envo de un mensaje simple...........................................................................................2955.4.2.1 Configurando el Layout..........................................................................................2955.4.2.2 Configurar un elemento Email para el cuerpo del mensaje....................................2965.4.2.3 Controlador..............................................................................................................2975.4.2.4 Attachments.............................................................................................................298

    5.4.3 Enviar un mail por SMTP...............................................................................................2985.5 Request Handling....................................................................................................................299

    5.5.1 Obtaining Request Information.......................................................................................2995.5.2 Request Type Detection..................................................................................................3015.5.3 Obtaining Additional Client Information........................................................................3025.5.4 Responding To Requests.................................................................................................302

    5.6 El Componente Security.........................................................................................................3045.6.1 Configuracin.................................................................................................................3045.6.2 Mtodos...........................................................................................................................306

    5.6.2.1 requirePost()............................................................................................................3065.6.2.2 requireSecure()........................................................................................................3065.6.2.3 requireAuth()...........................................................................................................3065.6.2.4 requireLogin().........................................................................................................3065.6.2.5 loginCredentials(string $type).................................................................................306

  • 5.6.2.6 loginRequest(array $options)..................................................................................3065.6.2.7 parseDigestAuthData(string $digest)......................................................................3075.6.2.8 generateDigestResponseHash(array $data).............................................................3075.6.2.9 blackHole(object $controller, string $error)............................................................307

    5.6.3 Uso..................................................................................................................................3075.6.4 Basic HTTP Authentication............................................................................................308

    5.7 Sesiones..................................................................................................................................3095.7.1 Mtodos...........................................................................................................................310

    5.7.1.1 write.........................................................................................................................3105.7.1.2 setFlash....................................................................................................................3105.7.1.3 read..........................................................................................................................3115.7.1.4 check........................................................................................................................3115.7.1.5 delete.......................................................................................................................3115.7.1.6 destroy.....................................................................................................................3125.7.1.7 error.........................................................................................................................312

    6 Core Behaviors (Comportamientos Basicos).................................................................................3136.1 ACL........................................................................................................................................313

    6.1.1 Using the AclBehavior....................................................................................................3136.1.2 node()..............................................................................................................................315

    6.2 Containable.............................................................................................................................315# Using Containable.................................................................................................................316# Containing deeper associations.............................................................................................3186.2.1 Using Containable with pagination.................................................................................320# ContainableBehavior options................................................................................................321

    6.3 Translate..................................................................................................................................3226.3.1 Inicializando las tablas de la Base de datos i18n............................................................3226.3.2 Adjuntando el Comportamiento de Traduccin a tus Modelos.......................................3226.3.3 Definiendo los Campos...................................................................................................3236.3.4 Conclusiones...................................................................................................................3236.3.5 Obtener todos los registros de traduccin para un campo determinado.........................324

    6.3.5.1 Using the bindTranslation method..........................................................................3256.3.6 Saving in another language.............................................................................................3266.3.7 Multiple Translation Tables............................................................................................327

    6.3.7.1 Create the TranslateModel......................................................................................3286.3.7.2 Changing the Table..................................................................................................328

    6.4 Arboles (Tree).........................................................................................................................3296.4.1 Requerimientos...............................................................................................................3296.4.2 Uso Bsico......................................................................................................................329

    6.4.2.1 Agregando datos......................................................................................................3316.4.2.2 Modificando datos...................................................................................................3326.4.2.3 Borrando datos........................................................................................................3336.4.2.4 Haciendo consultas y usando tus datos...................................................................334

    6.4.2.4.1 El mtodo children..........................................................................................3346.4.2.4.2 Contando los hijos...........................................................................................3356.4.2.4.3 generatetreelist.................................................................................................3356.4.2.4.4 getparentnode..................................................................................................3366.4.2.4.5 getpath.............................................................................................................336

    6.4.3 Uso Avanzado.................................................................................................................3376.4.3.1 moveDown..............................................................................................................337

  • 6.4.3.2 moveUp...................................................................................................................3386.4.3.3 removeFromTree.....................................................................................................3396.4.3.4 reorder.....................................................................................................................340

    6.4.4 Data Integrity..................................................................................................................3406.4.4.1 Recover....................................................................................................................3406.4.4.2 Reorder....................................................................................................................3416.4.4.3 Verify.......................................................................................................................342

    7 Ayudantes del Core.........................................................................................................................3437.1 AJAX......................................................................................................................................343

    7.1.1 AjaxHelper Options........................................................................................................3447.1.1.1 General Options.......................................................................................................3447.1.1.2 Opciones de retrollamadas (Callback Options).......................................................344

    7.1.2 Mtodos...........................................................................................................................3457.1.2.1 link...........................................................................................................................3457.1.2.2 remoteFunction........................................................................................................3477.1.2.3 remoteTimer............................................................................................................3487.1.2.4 form.........................................................................................................................3487.1.2.5 submit......................................................................................................................3497.1.2.6 observeField............................................................................................................3507.1.2.7 observeForm............................................................................................................3507.1.2.8 autoComplete..........................................................................................................3517.1.2.9 isAjax......................................................................................................................3527.1.2.10 drag & drop...........................................................................................................3527.1.2.11 slider......................................................................................................................3537.1.2.12 editor......................................................................................................................3547.1.2.13 sortable..................................................................................................................355

    7.2 Cache......................................................................................................................................3567.2.1 Generalidades en Caching...............................................................................................3567.2.2 Motores de Cache en Cake.............................................................................................3567.2.3 Configuracion del Cache Helper.....................................................................................3577.2.4 Caching en los Controllers..............................................................................................3577.2.5 Marking Non-Cached Content in Views.........................................................................3587.2.6 Clearing the Cache..........................................................................................................359

    7.3 Formularios.............................................................................................................................3597.3.1 Creando Formularios......................................................................................................359

    7.3.1.1 $options[type].......................................................................................................3617.3.1.2 $options[action]....................................................................................................3617.3.1.3 $options[url].........................................................................................................3627.3.1.4 $options[default]...................................................................................................3627.3.1.5 7.3.1.5 $options['inputDefaults'].............................................................................362

    7.3.2 Closing the Form.............................................................................................................3637.3.3 Automagic Form Elementos...........................................................................................363

    7.3.3.1 Field naming convention.........................................................................................3657.3.3.2 $options[type].......................................................................................................3667.3.3.3 $options[before], $options[between], $options[separator] and $options[after].............................................................................................................................................3667.3.3.4 $options[options]..................................................................................................3677.3.3.5 $options[multiple]................................................................................................3697.3.3.6 $options[maxLength]............................................................................................369

  • 7.3.3.7 $options[div].........................................................................................................3697.3.3.8 $options[label]......................................................................................................3707.3.3.9 $options['legend']....................................................................................................3717.3.3.10 $options[id].........................................................................................................3717.3.3.11 $options['error'].....................................................................................................3717.3.3.12 $options['default']..................................................................................................3727.3.3.13 $options[selected]...............................................................................................3727.3.3.14 $options[rows], $options[cols]........................................................................3727.3.3.15 $options[empty]..................................................................................................3737.3.3.16 $options[timeFormat].........................................................................................3737.3.3.17 $options[dateFormat]..........................................................................................3747.3.3.18 $options['minYear'], $options['maxYear'].............................................................3747.3.3.19 $options['interval'].................................................................................................3747.3.3.20 $options['class'].....................................................................................................374

    7.3.4 File Fields........................................................................................................................3747.3.4.1 Validating Uploads..................................................................................................375

    7.3.5 Form Element-Specific Methods....................................................................................3767.3.5.1 checkbox..................................................................................................................3767.3.5.2 button.......................................................................................................................3767.3.5.3 year..........................................................................................................................3777.3.5.4 month.......................................................................................................................3787.3.5.5 dateTime..................................................................................................................3797.3.5.6 day...........................................................................................................................3797.3.5.7 hour..........................................................................................................................3807.3.5.8 minute......................................................................................................................3807.3.5.9 meridian...................................................................................................................3807.3.5.10 error.......................................................................................................................3807.3.5.11 file..........................................................................................................................3807.3.5.12 hidden....................................................................................................................3817.3.5.13 isFieldError............................................................................................................3817.3.5.14 label.......................................................................................................................3817.3.5.15 password................................................................................................................3827.3.5.16 radio.......................................................................................................................3827.3.5.17 select......................................................................................................................3837.3.5.18 submit....................................................................................................................3837.3.5.19 text.........................................................................................................................3847.3.5.20 textarea..................................................................................................................384

    7.3.6 1.3 improvements............................................................................................................3857.4 HTML.....................................................................................................................................387

    7.4.1 Inserting Well-Formatted elements.................................................................................3887.4.1.1 charset......................................................................................................................3887.4.1.2 css............................................................................................................................3887.4.1.3 meta.........................................................................................................................3897.4.1.4 docType...................................................................................................................3917.4.1.5 style.........................................................................................................................3917.4.1.6 image.......................................................................................................................3927.4.1.7 link...........................................................................................................................3927.4.1.8 tag............................................................................................................................3947.4.1.9 div............................................................................................................................394

  • 7.4.1.10 para........................................................................................................................3947.4.1.11 script......................................................................................................................3957.4.1.12 scriptBlock............................................................................................................3957.4.1.13 scriptStart..............................................................................................................3967.4.1.14 scriptEnd................................................................................................................3967.4.1.15 tableHeaders..........................................................................................................3967.4.1.16 tableCells...............................................................................................................3977.4.1.17 url..........................................................................................................................398

    7.4.2 Changing the tags output by HtmlHelper.......................................................................3997.5 Js.............................................................................................................................................400

    7.5.1 Using a specific Javascript engine..................................................................................400# Using jQuery with other libraries.....................................................................................401

    7.5.2 Creating a Javascript Engine...........................................................................................4017.5.3 Javascript engine usage...................................................................................................401

    # Common options..............................................................................................................402# Callback wrapping............................................................................................................4027.5.3.1 Working with buffered scripts.................................................................................402

    7.5.4 Methods...........................................................................................................................4047.5.5 Ajax Pagination...............................................................................................................413

    # Making Ajax Links...........................................................................................................413# Adding effects and transitions..........................................................................................414

    7.6 Javascript................................................................................................................................4157.6.1 Methods...........................................................................................................................415

    7.7 Number...................................................................................................................................4187.7.1 currency...........................................................................................................................4187.7.2 precision..........................................................................................................................4197.7.3 toPercentage....................................................................................................................4207.7.4 toReadableSize................................................................................................................4207.7.5 format..............................................................................................................................420

    7.8 Paginator.................................................................................................................................4217.8.1 Mtodos...........................................................................................................................421

    7.9 RSS.........................................................................................................................................4237.9.1 Creando un RSS feed con el RssHelper..........................................................................423

    7.9.1.1 Cdigo para el Controlador.....................................................................................4247.9.1.1.1 Layout RSS......................................................................................................4247.9.1.1.2 La vista............................................................................................................425

    7.10 Sesin....................................................................................................................................4277.10.1 Methods.........................................................................................................................4287.10.2 flash...............................................................................................................................428

    # Using Flash for Success and Failure................................................................................4287.11 Text.......................................................................................................................................429

    # autoLinkEmails.....................................................................................................................429# autoLinkUrls.........................................................................................................................430# autoLink................................................................................................................................430# excerpt...................................................................................................................................430# highlight................................................................................................................................430# stripLinks..............................................................................................................................431# toList.....................................................................................................................................431# truncate..................................................................................................................................431

  • # trim........................................................................................................................................4327.12 Tiempo..................................................................................................................................432

    7.12.1 Formatting.....................................................................................................................4327.12.2 Testing Time..................................................................................................................434

    7.13 XML.....................................................................................................................................4347.13.1 serialize.........................................................................................................................4347.13.2 elem...............................................................................................................................4357.13.3 header............................................................................................................................435

    8 Librerias de utilidades del ncleo...................................................................................................4368.1 App..........................................................................................................................................4368.2 Inflector...................................................................................................................................436

    8.2.1 Class methods.................................................................................................................4368.3 Cadenas (String).....................................................................................................................437

    8.3.1 uuid.................................................................................................................................4378.3.2 tokenize...........................................................................................................................4378.3.3 insert................................................................................................................................4378.3.4 cleanInsert.......................................................................................................................438

    8.4 Xml.........................................................................................................................................4388.4.1 Anlisis Xml....................................................................................................................438

    8.5 Set...........................................................................................................................................4398.5.1 Set-compatible Path syntax.............................................................................................4398.5.2 insert................................................................................................................................4408.5.3 sort...................................................................................................................................4428.5.4 reverse.............................................................................................................................4448.5.5 combine...........................................................................................................................4478.5.6 normalize.........................................................................................................................4548.5.7 countDim.........................................................................................................................4578.5.8 diff...................................................................................................................................4588.5.9 check...............................................................................................................................4608.5.10 remove...........................................................................................................................4618.5.11 classicExtract................................................................................................................4628.5.12 matches.........................................................................................................................4678.5.13 extract............................................................................................................................4688.5.14 format............................................................................................................................4698.5.15 enum..............................................................................................................................4718.5.16 numeric.........................................................................................................................4718.5.17 map................................................................................................................................4738.5.18 pushDiff........................................................................................................................4758.5.19 filter...............................................................................................................................4768.5.20 merge.............................................................................................................................4768.5.21 contains.........................................................................................................................478

    8.6 Security...................................................................................................................................4788.7 Cache......................................................................................................................................478

    8.7.1 Cache::read()...................................................................................................................4788.7.2 Cache::write()...................................................