manualkumbia0.4.7

Download ManualKumbia0.4.7

If you can't read please download the document

Upload: juanmiguel1000

Post on 14-Aug-2015

20 views

Category:

Documents


0 download

TRANSCRIPT

Kumbia PHP FrameworkPorque Programar debera ser ms fcil

ndice de contenido1 2 3 4 Libro Beta...................................................................................................................................15 Agradecimientos.........................................................................................................................16 Prlogo.......................................................................................................................................17 Introduccin................................................................................................................................21 4.1 Sobre este libro...................................................................................................................21 4.2 Qu es un Framework? .....................................................................................................21 4.3 Qu es Kumbia?.................................................................................................................22 4.4 Kumbia vs Otros Frameworks..............................................................................................23 4.5 Est hecho Kumbia para m?.............................................................................................24 4.6 Nueve Razones para Usar Kumbia.......................................................................................25 5 Instalando Kumbia......................................................................................................................28 5.1 Prerrequisitos .....................................................................................................................28 5.2 Instalando ..........................................................................................................................28 5.3 Configuracin de Apache ....................................................................................................28 5.3.1 Por qu es importante Mod-Rewrite?..........................................................................29 5.4 Configuracin de PHP .........................................................................................................30 5.4.1 Porque Kumbia utiliza PHP5?......................................................................................30 5.5 Configuracin de MySQL ....................................................................................................30 5.6 Instalacin y Configuracin con Oracle ...............................................................................31 5.7 Detalles Especficos para SO ..............................................................................................32 6 Creacin de Proyectos................................................................................................................34 6.1 Introduccin .......................................................................................................................34 6.2 Iniciar un Proyecto ..............................................................................................................34 6.3 Directorios de Kumbia ........................................................................................................35 6.4 Otros Directorios ................................................................................................................36 6.5 Resumen ............................................................................................................................37 7 Configurando Kumbia.................................................................................................................38 7.1 Introduccin .......................................................................................................................38 7.2 forms/config/config.ini ........................................................................................................38 7.3 forms/config/core.ini ...........................................................................................................39 7.3.1 Cmo usar el parmetro extensions?.........................................................................40 7.4 forms/config/routes.ini .......................................................................................................40 8 Caractersticas avanzadas..........................................................................................................42 8.1 Parmetros con Nombre!...................................................................................................42 8.2 Obtener valores en una aplicacin Kumbia.........................................................................42 8.3 Uso de Paquetes (Namespaces)..........................................................................................45 9 Explicando la Implementacin MVC............................................................................................48 9.1 Introduccin........................................................................................................................48 9.2 Implementacin y forma de uso .........................................................................................48 9.3 Conceptos ..........................................................................................................................49 9.4 Ejemplo ..............................................................................................................................50 10 Primera Aplicacin en Kumbia..................................................................................................51 10.1 Creando una nueva aplicacin .........................................................................................51 10.2 Hola Kumbia .....................................................................................................................52 10.3 Kumbia URLS ....................................................................................................................53 10.4 Nuestra Primera Accin ....................................................................................................53 10.5 Agregando ms Contenido ...............................................................................................54 10.6 Repitiendo la Historia .......................................................................................................56

Libro de Kumbia: Porque Programar debera ser ms fcil

2

11 Modelos y Bases de Datos en Kumbia......................................................................................58 11.1 Introduccin .....................................................................................................................58 11.2 Por qu usar una capa de Abstraccin?...........................................................................58 11.3 Capa de Abstraccin Independiente en Kumbia................................................................59 11.4 Adaptadores Kumbia ........................................................................................................59 11.5 Esquema de Acceso a BB.DD en Kumbia ..........................................................................60 11.6 Modelos ............................................................................................................................60 12 Acceso Directo a RDBMS...........................................................................................................62 12.1 La Clase DB ......................................................................................................................62 12.2 Crear una instancia de DB ................................................................................................62 12.3 Conectar a una base de datos...........................................................................................62 12.4 Propiedades de la Clase DB ..............................................................................................62 12.4.1 $db->Id_Connection...................................................................................................62 12.4.2 $db->lastResultQuery ...............................................................................................62 12.4.3 $db->dbUser..............................................................................................................63 12.4.4 $db->dbHost .............................................................................................................63 12.4.5 $db->dbPort .............................................................................................................63 12.4.6 $db->dbPass .............................................................................................................63 12.4.7 $db->lastError ..........................................................................................................63 12.4.8 $db->dbName ..........................................................................................................63 12.5 Mtodos de la Clase DB ....................................................................................................63 12.5.1 Connect ....................................................................................................................63 12.5.2 Query ........................................................................................................................63 12.5.3 Close .........................................................................................................................64 12.5.4 Fetch Array ...............................................................................................................64 12.5.5 Num Rows .................................................................................................................64 12.5.6 Field Name ................................................................................................................65 12.5.7 Data Seek .................................................................................................................65 12.5.8 Affected Rows ...........................................................................................................65 12.5.9 Error ..........................................................................................................................65 12.5.10 No Error ..................................................................................................................65 12.5.11 Find .........................................................................................................................65 12.5.12 In Query ..................................................................................................................66 12.5.13 In Query Assoc ........................................................................................................66 12.5.14 In Query Num ..........................................................................................................66 12.5.15 Fetch One ...............................................................................................................67 12.5.16 Table Exists .............................................................................................................67 13 ActiveRecord............................................................................................................................68 13.1 Que es Active Record........................................................................................................68 13.2 La Vida sin ActiveRecord...................................................................................................68 13.3 Ventajas del Active Record ...............................................................................................69 13.4 Crear un Modelo en Kumbia .............................................................................................69 13.5 Columnas y Atributos .......................................................................................................70 13.6 Llaves Primarias y el Uso de IDs .......................................................................................70 13.7 CRUD: Create, Read, Update, Delete................................................................................71 13.7.1 Creando Registros ....................................................................................................71 13.7.2 Consultando Registros ..............................................................................................72 13.7.3 El poderoso Find .......................................................................................................73 13.7.4 Promedio, Contando, Sumando, Mnimo y Mximo ...................................................73 13.7.5 Actualizando Registros existentes ............................................................................74 13.7.6 Borrando Registros ...................................................................................................74 13.7.7 Propiedades Soportadas............................................................................................75 13.8 Convenciones en ActiveRecord.........................................................................................75

Libro de Kumbia: Porque Programar debera ser ms fcil

3

13.8.1 Convenciones Generales ...........................................................................................75 13.8.2 Id ..............................................................................................................................75 13.8.3 campo_id ..................................................................................................................75 13.8.4 campo_at ..................................................................................................................75 13.8.5 campo_in ..................................................................................................................76 13.9 Convenciones para RDBMs ...............................................................................................76 13.9.1 Convenciones Especiales para PostgreSQL ...............................................................76 13.9.2 Convenciones Especiales para Oracle .......................................................................76 13.10 Transacciones ................................................................................................................76 13.11 Persistencia.....................................................................................................................76 13.12 CallBacks en ActiveRecord..............................................................................................77 14 Active Record API......................................................................................................................78 14.1 Consulta ...........................................................................................................................78 14.1.1 distinct ......................................................................................................................78 14.1.2 find_all_by_sql (string $sql) .......................................................................................78 14.1.3 find_by_sql (string $sql) ............................................................................................79 14.1.4 find_first ....................................................................................................................79 14.1.5 find ...........................................................................................................................80 14.1.6 select_one(string $select_query) ..............................................................................81 14.1.7 select_one(string $select_query) (static) ..................................................................81 14.1.8 exists ........................................................................................................................82 14.1.9 find_all_by..................................................................................................................82 14.1.10 find_by_*campo*......................................................................................................82 14.1.11 find_all_by_*campo*.................................................................................................82 14.2 Conteos y Sumatorias ......................................................................................................82 14.2.1 count..........................................................................................................................82 14.2.2 sum............................................................................................................................83 14.2.3 count_by_sql..............................................................................................................83 14.3 Promedios, Mximos y Minmos ........................................................................................83 14.3.1 average......................................................................................................................83 14.3.2 maximum ..................................................................................................................83 14.3.3 minimum ...................................................................................................................83 14.4 Creacin/Actualizacin/Borrado de Registros....................................................................83 14.4.1 create .......................................................................................................................83 14.4.2 update ......................................................................................................................84 14.4.3 update_all .................................................................................................................84 14.4.4 save ..........................................................................................................................84 14.4.5 create_from_request .................................................................................................84 14.4.6 save_from_request ....................................................................................................85 14.4.7 delete ........................................................................................................................85 14.4.8 delete_all ..................................................................................................................85 14.5 Validacin de campos........................................................................................................85 14.5.1 validates_presence_of ...............................................................................................85 14.5.2 validates_length_of ...................................................................................................85 14.5.3 validates_numericality_of ..........................................................................................86 14.5.4 validates_email_in .....................................................................................................86 14.5.5 validates_uniqueness_of ...........................................................................................86 14.5.6 validates_date_in ......................................................................................................87 14.5.7 validates_format_of ...................................................................................................87 14.6 Transacciones. .................................................................................................................87 14.6.1 commit() ...................................................................................................................87 14.6.2 begin() ......................................................................................................................87 14.6.3 rollback() ...................................................................................................................88

Libro de Kumbia: Porque Programar debera ser ms fcil

4

14.7 Otros Metodos ..................................................................................................................88 14.7.1 sql(string $sql) ..........................................................................................................88 14.8 Callbacks en ActiveRecord................................................................................................88 14.8.1 before_validation.......................................................................................................89 14.8.2 before_validation_on_create......................................................................................89 14.8.3 before_validation_on_update ....................................................................................89 14.8.4 after_validation_on_create ........................................................................................89 14.8.5 after_validation_on_update .......................................................................................89 14.8.6 after_validation .........................................................................................................89 14.8.7 before_save ..............................................................................................................89 14.8.8 before_update............................................................................................................90 14.8.9 before_create.............................................................................................................90 14.8.10 after_update ...........................................................................................................90 14.8.11 after_create.............................................................................................................90 14.8.12 after_save ...............................................................................................................90 14.8.13 before_delete...........................................................................................................90 14.8.14 after_delete .............................................................................................................90 15 Asociaciones.............................................................................................................................91 15.1 Como usar Asociaciones? ...............................................................................................91 16 Traza y Debug en ActiveRecord................................................................................................94 16.1 Traza en Pantalla ..............................................................................................................94 16.2 Mostrar Errores en Objetos ActiveRecord .........................................................................95 17 Generacin De Formularios......................................................................................................97 17.1 Tipos de Formularios ........................................................................................................97 17.2 Ventajas Generadores de Formularios ..............................................................................98 17.3 Desventajas Generadores de Formularios ........................................................................98 18 StandardForm...........................................................................................................................99 18.1 Introduccin .....................................................................................................................99 18.2 Crear un controlador para el Formulario Album.................................................................99 18.3 Convenciones de los Nombres de las Columnas .............................................................100 18.3.1 id .............................................................................................................................100 18.3.2 tabla_id ...................................................................................................................100 18.3.3 campo_at ................................................................................................................101 18.3.4 campo_in ................................................................................................................101 18.3.5 email........................................................................................................................101 18.4 Comportamiento de un Formulario Standard .................................................................101 18.5 Propiedades de un Formulario Standard .........................................................................102 18.5.1 $scaffold (True o False) ...........................................................................................102 18.5.2 $source ...................................................................................................................102 18.6 Mtodos de la Clase StandardForm ................................................................................102 18.6.1 set_form_caption($title) ..........................................................................................102 18.6.2 use_helper($campo) ...............................................................................................102 18.6.3 set_type_time($campo) ..........................................................................................103 18.6.4 set_type_textarea($campo) ....................................................................................103 18.6.5 set_type_image($campo) ........................................................................................104 18.6.6 set_type_numeric($campo) .....................................................................................104 18.6.7 set_type_date($campo) ..........................................................................................104 18.6.8 set_type_email($campo) .........................................................................................104 18.6.9 set_type_password($campo) ...................................................................................104 18.6.10 set_text_upper($campo) .......................................................................................105 18.6.11 set_combo_static($camo, array $valores) .............................................................105 18.6.12 set_combo_dynamic($campo, $tabla, $campoDetalle, column_relation: $campo) ............................................................................................................................................105

Libro de Kumbia: Porque Programar debera ser ms fcil

5

18.6.13 ignore($campo) ....................................................................................................106 18.6.14 set_size($campo, $size) ........................................................................................106 18.6.15 set_maxlength($campo, $length) .........................................................................106 18.6.16 not_browse($campo, [$campo2, ...]) ....................................................................106 18.6.17 not_report($campo) ..............................................................................................106 18.6.18 set_title_image($im) .............................................................................................106 18.6.19 fields_per_row($number) ......................................................................................106 18.6.20 unable_insert ........................................................................................................107 18.6.21 unable_delete .......................................................................................................107 18.6.22 unable_update ......................................................................................................107 18.6.23 unable_query ........................................................................................................107 18.6.24 unable_browse ......................................................................................................107 18.6.25 unable_report ........................................................................................................107 18.6.26 route_to($controller,$action,$id) ...........................................................................107 18.6.27 set_hidden($campo) .............................................................................................108 18.6.28 set_query_only($campo) .......................................................................................108 18.6.29 set_caption($campo, $caption) .............................................................................108 18.6.30 set_action_caption($action, $caption) ...................................................................108 18.6.31 set_event($action, $caption) .................................................................................108 18.6.32 set_attribute($field, $attribute,$value) .................................................................109 18.6.33 show_not_nulls()....................................................................................................109 18.7 Eventos del lado del Cliente (Callbacks) .........................................................................109 18.7.1 before_enable_insert................................................................................................109 18.7.2 after_enable_insert .................................................................................................109 18.7.3 before_enable_update .............................................................................................109 18.7.4 after_enable_update ...............................................................................................109 18.7.5 before_enable_query ...............................................................................................109 18.7.6 after_enable_query .................................................................................................110 18.7.7 before_validation ....................................................................................................110 18.7.8 after_validation .......................................................................................................110 18.7.9 before_insert ...........................................................................................................110 18.7.10 before_update .......................................................................................................110 18.7.11 before_query .........................................................................................................110 18.7.12 before_report ........................................................................................................110 18.7.13 before_cancel_input(action) ..................................................................................110 18.8 Eventos del lado del Servidor (Callbacks) .......................................................................111 18.8.1 before_insert ...........................................................................................................112 18.8.2 after_insert .............................................................................................................112 18.8.3 before_update .........................................................................................................112 18.8.4 after_update ...........................................................................................................113 18.8.5 validation ................................................................................................................113 18.8.6 before_delete ..........................................................................................................113 18.8.7 after_delete .............................................................................................................113 18.8.8 before_fetch ............................................................................................................113 18.8.9 after_fetch ..............................................................................................................113 18.9 Trabajando con Imgenes ..............................................................................................114 18.10 Validaciones (A nivel de Campo) ..................................................................................114 18.11 Combos Estticos .........................................................................................................115 18.12 Cambiando el aspecto de Formularios StandardForm...................................................115 19 Grid-Form...............................................................................................................................118 20 Master-Detail..........................................................................................................................119 21 Controladores.........................................................................................................................121 21.1 Funcionamiento ..............................................................................................................121

Libro de Kumbia: Porque Programar debera ser ms fcil

6

21.2 Creacin de un Controlador ............................................................................................122 21.3 Persistencia en Controladores.........................................................................................122 21.4 Filtros en Controladores..................................................................................................124 21.4.1 before_filter($controller, $action, $id)......................................................................124 21.4.2 after_filter($controller, $action, $id)........................................................................125 21.4.3 not_found($controller, $action, $id).........................................................................125 21.5 Enrutamiento y Redirecciones.........................................................................................125 21.5.1 Por qu re-direccionamiento? ................................................................................125 21.5.2 Esttico....................................................................................................................126 21.5.3 Dinmico .................................................................................................................126 22 ApplicationController..............................................................................................................128 22.1 Mtodos de la Clase ApplicationController .....................................................................128 22.1.1 render($view) .........................................................................................................128 22.1.2 redirect($url, $seconds=0.5) ..................................................................................128 22.1.3 post($value) ............................................................................................................129 22.1.4 get($value) .............................................................................................................129 22.1.5 request($value) ......................................................................................................129 22.1.6 render_partial($name) ............................................................................................129 22.1.7 route_to([params: valor]) ........................................................................................129 22.1.8 redirect($url_controlador)........................................................................................130 22.1.9 cache_layout($minutes) ..........................................................................................130 22.1.10 not_found($controller, $action) .............................................................................130 22.1.11 set_response($type) .............................................................................................131 22.1.12 is_alnum($valor)....................................................................................................131 22.1.13 is_numeric($valor).................................................................................................131 23 ApplicationControllerBase.......................................................................................................133 24 Vistas......................................................................................................................................135 24.1 Porque usar Vistas? ......................................................................................................135 24.2 Uso de Vistas ..................................................................................................................137 24.3 Uso de Layouts ...............................................................................................................138 24.4 Uso de Templates ...........................................................................................................138 24.5 Uso de Partials ...............................................................................................................139 24.6 Uso de content()..............................................................................................................139 24.7 Vista Helpers...................................................................................................................139 24.7.1 link_to($accion, $texto, [$parametros])...................................................................139 24.7.2 link_to($accion, $texto, [$parametros])...................................................................140 24.7.3 link_to_remote($accion, $texto, $objeto_a_actualizar, [$parametros])....................140 24.7.4 button_to_remote_action($accion, $texto, $objeto_a_actualizar, [$parametros])....140 24.7.5 javascript_include_tag($archivo_js)..........................................................................140 24.7.6 javascript_library_tag($archivo_js)...........................................................................141 24.7.7 stylesheet_link_tag($archivo_css)............................................................................141 24.7.8 img_tag($src)...........................................................................................................141 24.7.9 form_remote_tag($action, $objeto_que_actualiza)...................................................141 24.7.10 form_tag($action)..................................................................................................142 24.7.11 end_form_tag()......................................................................................................142 24.7.12 comillas($texto).....................................................................................................142 24.7.13 submit_tag($caption).............................................................................................142 24.7.14 submit_image_tag($caption, $src).........................................................................142 24.7.15 button_tag($caption).............................................................................................143 24.7.16 text_field_tag($nombre).........................................................................................143 24.7.17 checkbox_field_tag($nombre)................................................................................143 24.7.18 numeric_field_tag($nombre)..................................................................................143 24.7.19 textupper_field_tag($nombre)...............................................................................143

Libro de Kumbia: Porque Programar debera ser ms fcil

7

24.7.20 date_field_tag($nombre)........................................................................................143 24.7.21 file_field_tag($nombre)..........................................................................................144 24.7.22 radio_field_tag($nombre, $lista)............................................................................144 24.7.23 textarea_tag($nombre)..........................................................................................144 24.7.24 password_field_tag($nombre)................................................................................144 24.7.25 hidden_field_tag($name).......................................................................................144 24.7.26 select_tag($name, $lista).......................................................................................144 24.7.27 option_tag($valor, $texto).....................................................................................145 24.7.28 upload_image_tag($nombre).................................................................................145 24.7.29 set_droppable($nombre, $accion)..........................................................................145 24.7.30 redirect_to($url, $segundos)..................................................................................145 24.7.31 render_partial($vista_partial, $valor='').................................................................145 24.7.32 br_break($numero) ...............................................................................................146 24.7.33 tr_break($numero) ................................................................................................146 24.7.34 tr_color($color1, $color2, [$colorn...])....................................................................146 24.7.35 updater_select($nombre) ......................................................................................146 24.7.36 text_field_with_autocomplete($nombre)................................................................147 24.7.37 truncate($texto, $numero=0)................................................................................148 24.7.38 highlight($texto, $texto_a_resaltar).......................................................................148 24.7.39 money($valor).......................................................................................................148 25 Uso de Flash ..........................................................................................................................149 25.1 Flash::error......................................................................................................................149 25.2 Flash::success.................................................................................................................149 25.3 Flash::notice....................................................................................................................149 25.4 Flash::warning.................................................................................................................149 26 Integrar (MVC) en Kumbia......................................................................................................150 26.1 Cdigo de la aplicacin....................................................................................................150 26.2 El proceso de funcionamiento.........................................................................................151 27 AJAX y Kumbia........................................................................................................................153 27.1 Introduccin ...................................................................................................................153 27.2 El Objeto XMLHttpRequest .............................................................................................154 27.3 Helpers AJAX...................................................................................................................154 27.3.1 link_to_remote ........................................................................................................154 27.3.2 form_remote_tag ....................................................................................................156 27.4 Como usar AJAX en Kumbia? .........................................................................................157 28 El Objeto AJAX.........................................................................................................................158 28.1 Mtodos del Objeto AJAX.................................................................................................158 28.1.1 AJAX.viewRequest ...................................................................................................158 28.1.2 AJAX.xmlRequest.....................................................................................................159 28.1.3 AJAX.execute...........................................................................................................160 28.1.4 AJAX.query ..............................................................................................................161 28.1.5 Ajax.Request y Ajax.Updater....................................................................................161 28.1.6 Ajax.PeriodicalUpdater.............................................................................................162 29 Prototype en Kumbia..............................................................................................................163 29.1 General ..........................................................................................................................163 29.1.1 $..............................................................................................................................163 29.1.2 $F ............................................................................................................................164 29.1.3 $V ...........................................................................................................................164 29.1.4 $C............................................................................................................................165 29.2 Number ..........................................................................................................................165 29.2.1 times .......................................................................................................................165 29.2.2 upto ........................................................................................................................165 29.2.3 downto ....................................................................................................................166

Libro de Kumbia: Porque Programar debera ser ms fcil

8

29.2.4 next ........................................................................................................................166 29.2.5 step .........................................................................................................................166 29.3 Array ..............................................................................................................................166 29.3.1 clear ........................................................................................................................166 29.3.2 clone .......................................................................................................................167 29.3.3 compact ..................................................................................................................167 29.3.4 each ........................................................................................................................167 29.3.5 first .........................................................................................................................168 29.3.6 indexOf ...................................................................................................................168 29.3.7 inspect ....................................................................................................................168 29.3.8 last ..........................................................................................................................168 29.3.9 reduce .....................................................................................................................169 29.3.10 reverse ..................................................................................................................169 29.3.11 max........................................................................................................................169 29.3.12 inject......................................................................................................................169 30 Efectos Visuales y Script.Aculo.Us..........................................................................................171 30.1 Efectos Bsicos...............................................................................................................171 30.1.1 Effect.Opacity..........................................................................................................173 30.1.2 Effect.Scale..............................................................................................................174 30.1.3 Effect.Morph............................................................................................................174 30.1.4 Effect.Move..............................................................................................................175 30.1.5 Effect.Highlight........................................................................................................176 30.1.6 Effect.Parallel ..........................................................................................................176 30.2 Efectos Combinados........................................................................................................177 30.2.1 Effect.Appear...........................................................................................................178 30.2.2 Effect.Fade...............................................................................................................178 30.2.3 Effect.Puff................................................................................................................178 30.2.4 Effect.DropOut.........................................................................................................178 30.2.5 Effect.Shake.............................................................................................................179 30.2.6 Effect.SwitchOff.......................................................................................................179 30.2.7 Effect.BlindDown......................................................................................................179 30.2.8 Effect.BlindUp..........................................................................................................179 30.2.9 Effect.SlideDown......................................................................................................179 30.2.10 Effect.SlideUp........................................................................................................180 30.2.11 Effect.Pulsate.........................................................................................................180 30.2.12 Effect.Squish..........................................................................................................180 30.2.13 Effect.Fold..............................................................................................................180 30.2.14 Effect.Grow............................................................................................................180 30.2.15 Effect.Shrink..........................................................................................................181 30.3 Objetos Arrastables.........................................................................................................181 30.3.1 Ejemplos..................................................................................................................182 30.4 Objetos que Reciben Objetos Arrastrables......................................................................182 30.5 Ms Informacin..............................................................................................................183 31 Ventanas PrototypeWindows..................................................................................................184 31.1 Uso de las Ventanas Prototype........................................................................................184 31.2 Referencia de Clases y Objetos de Prototype Windows...................................................186 31.2.1 Clase Window..........................................................................................................186 31.3 Ejemplos de Prototype Windows.....................................................................................189 31.3.1 Abriendo una Ventana Sencilla................................................................................189 31.3.2 Abrir una ventana usando una URL..........................................................................190 31.3.3 Abre una ventana con un contenido existente.........................................................191 31.3.4 Abriendo una cuadro de dialogo usando AJAX..........................................................191 31.3.5 Abrir un cuadro de Dialogo de Alerta.......................................................................192

Libro de Kumbia: Porque Programar debera ser ms fcil

9

32 Funciones de Reportes...........................................................................................................194 32.1 Manual de Referencia de FPDF .......................................................................................194 32.2 Qu es FPDF? ................................................................................................................194 33 Correo Electrnico..................................................................................................................195 33.1 Qu es PHPMailer? ........................................................................................................195 33.2 Por qu usar phpmailer? ...............................................................................................196 33.3 Ejemplo ..........................................................................................................................196 34 Integracin con Smarty...........................................................................................................199 34.1 Qu es Smarty? ............................................................................................................199 34.2 Como se integra Smarty a Kumbia .................................................................................200 35 Loggers...................................................................................................................................202 35.1 Mtodos de la Clase Logger ............................................................................................202 35.1.1 constructor ..............................................................................................................202 35.1.2 log($message, $type) .............................................................................................202 35.1.3 begin .......................................................................................................................203 35.1.4 commit ....................................................................................................................203 35.1.5 rollback ...................................................................................................................203 35.1.6 close .......................................................................................................................203 36 Session...................................................................................................................................204 36.1 Mtodos de la clase Session ...........................................................................................204 36.1.1 Session::set_data($name, $valor) ...........................................................................204 36.1.2 Session::get_data($name, $valor) ...........................................................................204 36.1.3 Session::unset_data($name) ...................................................................................204 36.1.4 Session::isset_data($name) ....................................................................................204 36.1.5 Session::set($name, $valor) ...................................................................................204 36.1.6 Session::get($name, $valor) ...................................................................................205 37 Coders....................................................................................................................................206 37.1 Activar los Coders ..........................................................................................................206 37.2 Probar los coders ............................................................................................................206 37.2.1 Un ejemplo prctico ................................................................................................206 38 ACL.........................................................................................................................................210 39 Pasos de Baile en Kumbia.......................................................................................................212 39.1 Creando tus propios archivos de configuracin .ini.........................................................212 39.2 Leer la configuracin Actual............................................................................................213 39.3 Leer Archivos Excel con Kumbia......................................................................................214 39.4 Utilizando la consola Interactiva iPHP..............................................................................217 39.4.1 create_standardform($nombre) ..............................................................................217 39.4.2 create_model($nombre) ..........................................................................................217 39.4.3 create_controller($nombre) ....................................................................................217 39.5 Validar un Usuario...........................................................................................................217 39.6 Crear un Reporte usando FPDF........................................................................................221 39.7 Combos Actualizables con AJAX.......................................................................................224 39.8 Cambiando el Controlador por Defecto...........................................................................228 39.9 Devolviendo una salida XML............................................................................................229 39.10 Subir un Archivo sin StandardForm...............................................................................230 39.11 Usar Componentes Edicin In-Place..............................................................................233 39.12 Creando un Live Search................................................................................................235 39.13 Integrar Kumbia con MooTools......................................................................................237 39.14 Ordenar registros usando Listas Ordenables.................................................................238 39.15 Grficas estadsticas en Kumbia....................................................................................238 39.16 Crear un sindicado RSS para nuestro Sitio....................................................................238 39.17 Un sitio Web 2.0 con Etiquetas......................................................................................238 39.18 Crear una Validacin de Permisos de Usuario...............................................................238

Libro de Kumbia: Porque Programar debera ser ms fcil

10

39.19 Una Insercin y Validacin con AJAX.............................................................................238 39.20 Llenando una Etiqueta SELECT .....................................................................................238 39.21 Usando Parmetros con Nombre en tus Aplicaciones....................................................238 39.22 Creando tus propios Vistas Helpers...............................................................................238 40 Tutorial/Curso de Kumbia.......................................................................................................240 40.1 Introduccin al Tutorial....................................................................................................240 40.1.1 Prologo ....................................................................................................................240 40.1.2 Pre-Requisitos .........................................................................................................240 40.1.3 Comentarios ............................................................................................................240 41 Captulo 1: Introduccin a Kumbia..........................................................................................241 41.1 Por qu Un Framework? ................................................................................................241 41.2 Por qu utilizar Frameworks? ........................................................................................241 41.3 Por qu PHP5? ..............................................................................................................241 41.4 Por qu Patrones? .........................................................................................................242 42 Captulo 2: Por qu Kumbia?.................................................................................................243 43 Captulo 3: La tienda de Msica..............................................................................................244 44 Captulo 4: Hablando y Codificando........................................................................................245 45 Captulo 5: Usando casos de Uso............................................................................................246 46 Captulo 6: El Flujo del Sistema...............................................................................................247 47 Captulo 7: El Modelo de Datos...............................................................................................250 48 Captulo 8: Empezando con Kumbia.......................................................................................252 48.1 Creando un Nuevo Proyecto ...........................................................................................252 48.2 Creando la Base de Datos ..............................................................................................252 48.3 Configurando la Conexin ..............................................................................................253 48.4 Enlaces para esta Seccin ..............................................................................................255 48.5 Creando la Tabla Productos ............................................................................................255 48.6 Creando un Modelo ........................................................................................................256 48.7 Creando un Formulario de Mantenimiento .....................................................................257 49 Glosario de Conceptos............................................................................................................260 49.1 AJAX ...............................................................................................................................260 49.2 Modelo Vista Controlador (MVC) .....................................................................................260 49.3 Framework .....................................................................................................................261 49.4 ActiveRecord ..................................................................................................................262 49.5 Scaffold (Andamiaje) ......................................................................................................262 49.6 Programacin Orientada a Objetos ( OOP )....................................................................262 49.7 Capa de Abstraccin de Datos ........................................................................................262 49.8 PHP .................................................................................................................................262 50 The GNU General Public License (GPL)...................................................................................264 51 Log de cambios en este libro..................................................................................................269

Libro de Kumbia: Porque Programar debera ser ms fcil

11

Libro de Kumbia: Porque Programar debera ser ms fcil

12

1 Libro BetaEste libro se encuentra en etapa de desarrollo. Como experimento estoy liberndolo con el fin de que sirva temporalmente para entender mejor las caractersticas del framework mientras su documentacin final es terminada. Este libro tambin se encuentra en revisin de diseo grfico, ortografa gramtica, estructura de contenido y otros aspectos as que stos pueden cambiar en cualquier momento. Hay muchas ideas para implementar en este libro, as como caractersticas, funciones, clases y otras cosas que falta mostrar del framework. Usted puede colaborar enviando contenido para mejorar esta documentacin, su ayuda ser invaluablemente valorada. Gracias por ser parte de esto, Andrs Felipe Gutierrez

Libro de Kumbia: Porque Programar debera ser ms fcil

13

2 AgradecimientosEsta pgina es para agradecer a quienes con su tiempo y apoyo en gran o en poca medida han ayudado a que este framework sea cada da mejor. A todos ellos Gracias Totales: Julian Cortez Sergio Beltrn Eduar Carvajal Gian Corzo Arnold Espitaleta

Libro de Kumbia: Porque Programar debera ser ms fcil

14

3 PrlogoKumbia naci en un esfuerzo por no esforzarme para hacer las cosas. Puede sonar raro pero as fue. Un da empec a hacer un proyecto de un sistema de informacin donde haban muchos formularios y dije: - Esta cosa siempre es lo mismo, as que si yo hiciera algo para no repetir tanto y slo escribir lo que cambiaba en cada formulario entonces sera ms rpido. Despus de haber terminado las funciones para generar los formularios me d cuenta que haban quedado muy bien y entonces lo empec ha implementar en otras cosas. As es que Kumbia naci de una aplicacin real y lo puse a disposicin de la Comunidad. Mi trabajo era muy independiente del objetivo de sistema de informacin que se iba a desarrollar con los generadores de formularios, as que me propuse usarlo en otro proyecto. El resultado fue muy bueno, haba logrado desarrollar algo ms del 70% de un sistema de informacin en tan slo unos das. Entonces me puse a organizar las funciones, comentariar cdigo y mejorar la instalacin para que pudieran ser usadas en otros proyectos. En esa poca propuse llamar el proyecto AuroraForms, agregu alguna funcionalidad extra y decid darle propaganda en algunos foros de Internet. Quise darle un tono interesante al proyecto promulgu las facilidades que ofreca y puse un demo para que otros pudieran comentar sobre l. Esperaba que mucha gente se interesara, pero lo nico que logr fue muchas crticas constructivas. El proyecto no tena documentacin as que era como decirles miren lo que s hacer, pero no les digo cmo usarlo. No era mi intencin pero fue un error publicar sin documentar. Igualmente es necesario hacer muchas cosas para crear un proyecto de software libre y no pens que tuviera que tener en cuenta tantas cosas para que as fuese. Otro paso importante fue acoger la licencia GNU/GPL en vez de otra, como la BSD o la MIT, que aunque son menos restrictivas no favorecen el movimiento del software libre y eso es algo que quise transmitir con el proyecto. Pienso que el software libre permite crear el ambiente de colaboracin ideal que quera lograr con el proyecto, liberar las ideas permite que otros intervengan y busquen el camino ideal esperando aportar y ayudar con algo que le pueda servir a toda la comunidad. Buscar la mejor forma de hacer las cosas a veces puede resultar difcil, pues si encontramos alguna, que probablemente parezca la mejor, no siempre es aceptada por los dems y terminan rechazando las ideas que queremos vender, as demos todos los argumentos del caso.

Libro de Kumbia: Porque Programar debera ser ms fcil

15

Tiempo despus fui contratado para desarrollar un software algo grande y que patrocinaba el esfuerzo de trabajar en Kumbia. El resultado fue muy bueno, siempre me empeo en dar lo mejor cuando trabajo en un proyecto, as que el framework empez a crecer y la funcionalidad agregada forma gran parte de lo que hoy es como tal. Trabajar en una aplicacin real con caractersticas verstiles increment la estabilidad y las soluciones creadas para necesidades reales aument su funcionalidad. Algn tiempo despus fue agregado el proyecto a sourceforge.net y esto tambin ha sido un gran logro para posicionarlo como un proyecto serio y con futuro. Las herramientas proporcionadas en este forge dieron pie para empezar a mejorar muchos aspectos que estuvieron centralizados por mucho tiempo. El proyecto ahora posee muchas caractersticas que han ayudado a su crecimiento como por ejemplo los muchos servidores que replican Kumbia en todo el mundo, el sistema de gestin de bugs, el svn y el ms reciente dominio kumbia.org. Muchas personas han sido tambin fundamentales para levantar este proyecto sin duda, la colaboracin tanto en apoyo econmico, moral, de desarrollo, motivacin a usuarios, testeo de funciones, sugerencias y pruebas han contribuido a lo que es el proyecto hoy como tal. Aun en el auge de las frameworks para php y otros lenguajes, Kumbia fue pensado desde un punto de vista muy diferente. Al pasar de los das el objetivo de este proyecto se volva cada vez ms claro. Kumbia deba ser potente como para desarrollar proyectos a nivel empresarial; pero al mismo tiempo sencillo, tanto que hasta alguien que empezara a desarrollar en PHP pudiera adoptarlo como herramienta de trabajo saltndose muchos das de leer y releer tutoriales de principiantes. Es muy motivante cuando dicen que nuestro trabajo es fcil de usar, prctico o til ya que se ha logrado satisfaccin colectiva. La motivacin engranada con el deseo de hacer las cosas bien es algo que busco constantemente. Pienso que los lmites de la computacin empezaron a verse muy lejanos cuando el Internet entr en furor, para m creo que marc lo que siempre ha sido mi visin de lo que quiero. Programar para Internet es mi constante y la preocupacin por aprender y mejorar es el pilar de todo lo que hago para l. Programar fcil es importante. Cuando escribo cdigo, primero sueo y luego trabajo por ese sueo. Escribo cdigo pensando si esto fuera tan slo esto, entonces ya hubiera terminado sin hacer casi nada. Luego dedico varias horas para que ese poquito haga todo lo que tiene que hacer sin daar la fantasa. Luego me d cuenta que as funciona todo y que muchas cosas nos tocan fciles por el trabajo soador de otros. Depende de la cultura, se pueden rechazar una propuesta cuando parece muy alocada o inalcanzable para el medio en la que se plantea. Encontrar las personas que tengan suficiente experiencia o necesidad para apoyar ideas o contribuir con el mejoramiento de stas puede ser una larga tarea, pero cuando las encuentras, te motivas a continuar y a

Libro de Kumbia: Porque Programar debera ser ms fcil

16

mejorar, porque piensas que puede ser til para alguien ms. Con esta introduccin espero se haya interesado por este libro y por este proyecto que tambin fue pensado y desarrollado para alguien como usted.

Libro de Kumbia: Porque Programar debera ser ms fcil

17

Parte I

Introduccin

Libro de Kumbia: Porque Programar debera ser ms fcil

18

4 Introduccin4.1 Sobre este libroEl libro de Kumbia es un intento por comunicar todo lo que este framework puede hacer por usted. Le permite descubrir todos los rincones y aprender por qu Kumbia puede ser la herramienta que estaba esperando para empezar a desarrollar su proyecto. Cumbia es el nombre de un ritmo musical del caribe y Kumbia es un producto colombiano para el mundo. Programar debe ser tan bueno como bailar y Kumbia es un baile, un baile para programar.

4.2 Qu es un Framework?En el desarrollo de software, un framework es una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. Tpicamente, un framework puede incluir soporte de programas, libreras y un lenguaje de scripting entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto. Un framework agrega funcionalidad extendida a un lenguaje de programacin; sta, automatiza muchos de los patrones de programacin para orientarlos a un determinado propsito. Un framework proporciona una estructura al cdigo y hace que los desarrolladores escriban cdigo mejor, ms entendible y mantenible. Adems hace la programacin ms fcil, convirtiendo complejas funciones en sencillas instrucciones. Est usualmente escrito en el lenguaje que extiende. Kumbia est escrito en PHP5. Un framework permite separar en capas la aplicacin. En general, divide la aplicacin en tres capas: La lgica de presentacin que administra las interacciones entre el usuario y el software. La Lgica de Datos que permite el acceso a un agente de almacenamiento persistente u otros. La lgica de dominio o de negocio, que manipula los modelos de datos de acuerdo a los comandos recibidos desde la presentacin.

Los Web framework pretenden facilitar el desarrollo de Aplicaciones web ( sitios web, intranets, etc). PHP es conocido por su simplicidad y es ampliamente usado en este campo. Slo PHP puede utilizar casi cualquier motor de base de datos, administrar sesiones, acceder a archivos del servidor, etc, pero cuando las aplicaciones crecen y su complejidad aumenta un framework solventa muchos problemas y facilita muchas tareas.

Libro de Kumbia: Porque Programar debera ser ms fcil

19

4.3 Qu es Kumbia?Kumbia es un esfuerzo por producir un framework que ayude a reducir el tiempo de desarrollo de una aplicacin web sin producir efectos sobre los programadores. Est basado en los siguientes conceptos:

Compatible con muchas plataformas. Fcil de instalar y configurar. Fcil de aprender. Listo para aplicaciones comerciales. Convencin sobre Configuracin. Simple en la mayor parte de casos pero flexible para adaptarse a casos ms complejos. Soportar muchas caractersticas de Aplicaciones Web Actuales. Soportar las practicas y patrones de programacin mas productivos y eficientes. Producir aplicaciones fciles de mantener. Basado en Software Libre.

El principal principio es producir aplicaciones que sean prcticas para el usuario final y no slo para el programador. La mayor parte de tareas que le quiten tiempo al desarrollador deberan ser automatizadas por Kumbia para que l pueda enfocarse en la lgica de negocio de su aplicacin. No deberamos reinventar la rueda cada vez que se afronte un nuevo proyecto de software. Para satisfacer estos objetivos Kumbia est escrito en PHP5. Adems ha sido probado en aplicaciones reales que trabajan en diversas reas con variedad de demanda y funcionalidad. Es compatible con las bases de datos disponibles actuales mas usadas:

MySQL. PostgreSQL. Oracle.

El modelo de objetos de Kumbia es utilizado en tres diferentes capas:

Abstraccin de la base de datos. Mapeo Objeto-Relacional. Modelo MVC (Modelo, Vista, Controlador).

Caractersticas comunes de Aplicaciones Web son automatizadas por Kumbia:

Plantillas (TemplateView). Validacin de Formularios. Administracin de Cach. Scaffolding. Interaccin AJAX. Generacin de Formularios.

Libro de Kumbia: Porque Programar debera ser ms fcil

20

Efectos Visuales. Seguridad.

Kumbia utiliza otros proyectos de software libre para complementar su funcionalidad:

FPDF: Reportes en formato PDF Prototype: Javascript crossbrowser Scriptaculous: Efectos visuales PHPMailer: Correo Electrnico Smarty: Motor de Plantillas potente y fcil de usar

4.4 Kumbia vs Otros FrameworksEn un mercado inundado de frameworks MVC que prometen ser la solucin de desarrollo a cualquier tipo de proyecto, Kumbia pretende ser una solucin a cualquier tipo de persona desde el principiante, pasando por el desarrollador que no tiene tiempo para aprender un nuevo framework, hasta la empresa de desarrollo de software. Lo importante es que exista una necesidad y que Kumbia pueda ayudarte a hacerla realidad. Kumbia es innovador y su principal enfoque es desarrollar herramientas y escribir cada componente del framework pensando en que sea fcil de usar para cualquiera que lea su documentacin. Cualquier framework para la Web respetable tiene una aplicacin del patrn MVC, un ORM (Mapeo objeto relacional), generacin de logs, enrutamiento, plantillas, facilidades javascript, uso de ajax y otras cosillas ms. Entonces, cul es la diferencia?. La diferencia est en cunto tiempo dedicas a leer su documentacin, cuntas veces debes recurrir a ella, cuntas veces debes recordar sintaxis compleja, y lo ms importante: Despus de cunto tiempo obtienes resultados? Te invitamos a comparar a Kumbia con otros frameworks y darte cuenta, cmo usando otras herramientas, escribes x, y, z cdigo, haces 1, 2, 3, etc pasos para hacer una simple tarea y cmo en Kumbia esto est reducido a su mnima unidad con lo que te haces ms productivo, aprendes ms rpido y das mejores soluciones anticipndote a la competencia.

4.5 Est hecho Kumbia para m?No importa si usted es el experto en PHP5 o un principiante, lo que importa es el tamao del proyecto que quiera desarrollar. Si va a crear un software pequeo de ms o menos 10 pginas con acceso limitado a bases de datos, sin obligacin en desempeo y disponibilidad, entonces puede utilizar PHP sin Kumbia.

Libro de Kumbia: Porque Programar debera ser ms fcil

21

Con Kumbia puede crear aplicaciones grandes o medianas, con lgica de negocios compleja y alta disponibilidad en donde PHP solo, no sera suficiente. Si planea mantener o extender sus aplicaciones en el futuro y necesita cdigo liviano, entendible y efectivo. Si desea dedicar tiempo al diseo y usabilidad de su aplicacin y olvidarse de los detalles. Si desea usar las ltimas caractersticas en interaccin con el usuario (como AJAX) en forma intuitiva sin tener que escribir cientos de lneas de JavaScript. Si quiere desarrollar rpido y con buena calidad.

En estos casos Kumbia est hecho para usted.

4.6 Nueve Razones para Usar Kumbia1) Es muy Fcil de Usar: Empezar con Kumbia es demasiado fcil, es slo descomprimir y empezar a trabajar. 2) Realmente Agilizamos Trabajo Crear una aplicacin muy funcional con Kumbia, es cuestin de horas o minutos, as que podemos darle gusto a nuestros clientes sin que afecte nuestro tiempo. Gracias a las mltiples herramientas que proporciona el framework para agilizar el trabajo podemos hacer ms en menos tiempo, 3) Separar la Lgica de la Presentacin? Una de las mejores prcticas de desarrollo orientado a la Web es seperar la lgica, de los datos y la presentacin, con Kumbia es sencillo aplicar el patrn MVC (Modelo, Vista, Controlador) y hacer nuestras aplicaciones mas fciles de mantener y de crecer. 4) Reduccin del uso de otros Lenguajes: Gracias a los Helpers y a otros patrones como ActiveRecord evitamos el uso de lenguajes SQL o HTML (en menor porcentaje), ya que Kumbia hace esto por nosotros, con esto logramos cdigo mas claro, natural y con menos errores. 5) Kumbia habla Espaol!: La documentacin, mensajes de error, archivos de configuracin, comunidad, desarrolladores, hablan espaol!!, con esto no tenemos que entender a medias otros Frameworks o quedarnos cruzados de manos porque no podemos pedir ayuda. 6) Aprender a usar Kumbia es cuestin de 1 da: Cuando Leemos toda la documentacin no tardamos ms de 1 da, esto nos permite adoptar todo su poder sin perder tiempo leyendo largas guas. 7) Sin darnos cuenta aplicamos los Patrones de diseo de moda: Los patrones de diseo son herramientas que facilitan el trabajo realizando abstraccin, reduciendo cdigo o haciendo ms fcil de entender la aplicacin. Cuando trabajas en Kumbia aplicas muchos patrones y al final te das cuenta que eran mas fciles de usar de lo que

Libro de Kumbia: Porque Programar debera ser ms fcil

22

se escuchaban. 8) Kumbia es software Libre: No tienes que preocuparte por licenciar nada, Kumbia promueve las comunidades de aprendizaje, el conocimiento es de todos y cada uno sabe cmo aprovecharlo mejor. 9) Aplicaciones Robustas, no saba que tena una?: Aplicaciones empresariales requieren arquitecturas robustas, Kumbia proporciona una arquitectura fcil de aprender y de implementar sin complicarnos con conceptos raros o rebuscados.

Libro de Kumbia: Porque Programar debera ser ms fcil

23

Parte II

Empezando con Kumbia

Libro de Kumbia: Porque Programar debera ser ms fcil

24

5 Instalando Kumbia5.1 PrerrequisitosEs necesario instalar el la mquina con Windows 2000/XP/2003 Linux/UNIX un servidor Web Apache en cualquier versin. Puedes utilizar IIS con Isapi_Rewrite instalado. Instalar PHP5+ (recomendado 5.2) y algn motor de base de datos soportado si se necesitase.

5.2 InstalandoKumbia se distribuye en un paquete comprimido listo para usar. Se puede descargar la ltima versin de http://www.kumbia.org El nombre del paquete tiene un nombre como kumbia-version-notes.formato, por ejemplo: kumbia-0.4.7a-stable.tar.gz Se copia el paquete al directorio raz del servidor web. Windows: c:\Apache2\htdocs\ o c:\wamp\www Linux: /srv/www/htdocs, /var/www/html o /var/www Se descomprime y crea un directorio kumbia-0.4.7 que puede ser renombrado por el nombre de nuestro proyecto.

Informacin: Si desea instalar la ultima beta de Kumbia debe ingresar al grupo en google y descargarlo de los archivos del grupo. En http://groups.google.com/group/kumbia

5.3 Configuracin de ApacheKumbia utiliza un mdulo llamado mod_rewrite para la utilizacin de URLS ms entendibles y fciles de recordar en nuestras aplicaciones. Por esto, el mdulo debe ser configurado e instalado en Apache. Para esto, debe chequear que el mdulo est habilitado en el httpd.conf Options Indexes FollowSymLinks AllowOverride All Order allow,deny

Libro de Kumbia: Porque Programar debera ser ms fcil

25

Allow from all

En el DocumentRoot (Directorio Raz de Apache) debe llevar la opcin AllowOverride All

para que Apache lea el archivo .htaccess y llame a mod_rewriteAccessFileName .htaccess LoadModule rewrite_module modules/mod_rewrite.so

Sirven para indicar que el archivo de configuracin se llama .htaccess y que suba el mdulo mod_rewrite, esta ltima lnea generalmente aparece con un signo # de comentario.DirectoryIndex index.php index.html ...

Indican a Apache que index.php es un archivo de ndice que tiene prioridad sobre index.html, es muy importante que index.php est antes de index.html.

5.3.1 Por qu es importante Mod-Rewrite?ReWrite es un mdulo de apache que permite reescribir las urls que han utilizado nuestros usuarios a otras ms complicadas para ellos. Kumbia encapsula esta complejidad permitindonos usar URLS bonitas o limpias como las que vemos en blogs o en muchos sitios donde no aparecen los ? los & o las extensiones del servidor (.php, .asp, .aspx, etc). Adems de esto, con mod-rewrite, kumbia puede proteger nuestras aplicaciones ante la posibilidad de que los usuarios puedan ver los directorios del proyecto y puedan acceder a archivos de clases, modelos, lgica, etc, sin que sean autorizados. Con mod-rewrite el nico directorio que pueden ver los usuarios es el contenido del directorio public, el resto permanece oculto y slo puede ser visualizado cuando ha realizado una peticin en forma correcta y tambin es correcto segn nuestra lgica de aplicacin. Cuando escribes direcciones utilizando este tipo de URLs, ests ayudando tambin a los motores de bsqueda a indexar mejor tu informacin.

5.4 Configuracin de PHPLa

siguiente configuracin correctamente:

de

PHP

es

importante

para

que

Kumbia

funcione

short_open_tag = On Permiten el uso de etiquetas del tipo select @@global.sql_mode;

Dependiendo de la configuracin que tenga le dar un resultado parecido a esto:+----------------------------------------------| @@global.sql_mode +----------------------------------------------| STRICT_ALL_TABLES +----------------------------------------------+ | + | +

Para cambiar este parmetro, a uno adecuado al framework, debe ejecutar el siguiente comando:mysql> set [global | session] sql_mode = ;

o cambiar la configuracin del archivo my.ini en su sistema operativo.

Libro de Kumbia: Porque Programar debera ser ms fcil

27

Para ver otros parmetros ver el siguiente enlace [1]

5.6 Instalacin y Configuracin con OracleKumbia trabaja con la extensin de PHP OCI8. Estas funciones le permiten acceder a bases de datos Oracle 10, Oracle 9, Oracle 8 y Oracle 7 usando la Interfaz de Llamados Oracle (OCI por sus siglas en Ingls). Ellas soportan la vinculacin de variables PHP a recipientes Oracle, tienen soporte completo LOB, FILE y ROWID, y le permiten usar variables de definicin entregadas por el usuario. Para que OCI8 trabaje es necesario instalar el cliente instantneo de oracle. Luego hay que agregar a la variable de entorno PATH del sistema la ruta a donde fue descomprimido el cliente instantneo. PATH=%PATH %;c:\instantclient10_2\ Reiniciar Apache

Advertencia: En Oracle la funcionalidad limit podra no funcionar como se espera. Utilice la condicin rownum < numero_filas para hacer esto.

5.7 Detalles Especficos para SOInstalando Kumbia en XAMPP en WindowsEl procedimiento para instalar XAMPP en Windows es el siguiente: 1. Descargar XAMPP de Apache Friends 2. Instalar XAMPP Habitilitar Instalar Apache y MySQL como Servicio 3. Editar el archivo c:\Archivos de Programa\xampp\apache\conf\httpd.conf 4. Descomentar (quitar el #) de la lnea donde dice: 5. Reiniciar el servicio de Apache desde el Panel de Control de XAMPP 6. Copiar el paquete de Kumbia a: c:\Archivos de Programa\xampp\apache\htdocs\ 7. Continuar NormalmenteLoadModule rewrite_module modules/mod_rewrite.so

Instalando Kumbia en XAMPP en GNU/LinuxEl procedimiento para instalar XAMPP en cualquier distribucin GNU/Linux es el siguiente: 1. 2. 3. 4. Descargar XAMPP de Apache Friends Instalar XAMPP Copiar el paquete de Kumbia a /opt/lampp/htdocs/ Continuar la instalacin normalmente

Libro de Kumbia: Porque Programar debera ser ms fcil

28

Instalando Kumbia en Debian/Ubuntu LinuxInstala Apache2+MySQL5+PHP5 si no lo tienes instalado usando la guia en este blog o en Ubuntu-es. En Debian/Ubuntu tienes que usar el comando para habilitar mod_rewrite en Apache:# a2enmod rewrite

y luego en editas el archivo:/etc/apache2/sites-enabled/000-default

Buscas la lnea para el directorio /var/www donde dice: AllowOverride None y cambiar por AllowOverride All Reinicias Apache con:# /etc/init.d/apache2 restart

Continuar normalmente

Libro de Kumbia: Porque Programar debera ser ms fcil

29

6 Creacin de Proyectos6.1 IntroduccinEn Kumbia un proyecto es un conjunto de servicios que comparten un nombre de dominio y un conjunto de modelos de datos. En un proyecto las operaciones estn lgicamente agrupadas en controladores, stos pueden trabajar independientemente o de forma distribuida con los otros del mismo proyecto. Probablemente una aplicacin contenga al menos 2 controladores que administren el front y el back office de un proyecto. Un controlador representa una o ms pginas con un mismo propsito. Ejemplo: Mantenimie