Diferencia entre revisiones de «Indice»
(No se muestran 135 ediciones intermedias de 20 usuarios) | |||
Línea 1: | Línea 1: | ||
+ | <big>Nuevo manual actualizado para la v1 en español e ingles en [https://github.com/KumbiaPHP/Documentation/blob/master/es/index.md Manual KumbiaPHP en Github] | ||
+ | </big> | ||
+ | |||
Este manual esta portándose del [http://ufpr.dl.sourceforge.net/sourceforge/kumbia/Manual_Kumbia_PHP_Framework_v0-5.pdf Manual PDF de KumbiaPHP Framework]. | Este manual esta portándose del [http://ufpr.dl.sourceforge.net/sourceforge/kumbia/Manual_Kumbia_PHP_Framework_v0-5.pdf Manual PDF de KumbiaPHP Framework]. | ||
Línea 5: | Línea 8: | ||
= [[Agradecimientos|AGRADECIMIENTOS]] = | = [[Agradecimientos|AGRADECIMIENTOS]] = | ||
− | + | Este manual es para agradecer a los que con su tiempo y apoyo en gran o en poca medida han ayudado a que este framework sea cada día mejor. | |
+ | A todos ellos Gracias Totales: | ||
+ | Andres Felipe Gutierrez gutierrezandresfelipe@gmail.com | ||
+ | Deivinson Tejeda deivinsontejeda@kumbiaphp.com | ||
+ | Emilio Silveira emilio.rst@kumbiaphp.com | ||
+ | César Caballero aka Phillipo phillipo@kumbiaphp.com | ||
= [[Prefacio|PREFACIO]] = | = [[Prefacio|PREFACIO]] = | ||
Línea 11: | Línea 19: | ||
#[[Prefacio#Sobre_Kumbia|Sobre Kumbia]] | #[[Prefacio#Sobre_Kumbia|Sobre Kumbia]] | ||
#[[Prefacio#Sobre_la_comunidad|Sobre la comunidad]] | #[[Prefacio#Sobre_la_comunidad|Sobre la comunidad]] | ||
− | #[[Prefacio# | + | #[[Prefacio#Historia_de_Kumbia|Historia de Kumbia]] |
#[[Prefacio#Que_aporta_Kumbia|Que aporta Kumbia]] | #[[Prefacio#Que_aporta_Kumbia|Que aporta Kumbia]] | ||
− | #[[Prefacio# | + | #[[Prefacio#.C2.BFPorque_usar_Kumbia.3F|¿Porque usar Kumbia?]] |
− | #[[ | + | #[[Prefacio#Modelo.2C_Vista.2C_Controlador_.28MVC.29|Modelo, Vista, Controlador (MVC)]] |
− | + | ##[[Prefacio#.C2.BFQue_es.3F|¿Que es?]] | |
− | + | ##[[Prefacio#Implementaci.C3.B3n_y_uso|Implementación y uso]] | |
− | + | ##[[Prefacio#Informaci.C3.B3n_adicional|Información adicional]] | |
+ | ##[[Prefacio#Caso_pr.C3.A1ctico|Caso práctico]] | ||
= EMPEZANDO CON KUMBIA PHP FRAMEWORK = | = EMPEZANDO CON KUMBIA PHP FRAMEWORK = | ||
Línea 36: | Línea 45: | ||
##[[Instalar_Kumbia#Instalando_XAMPP_bajo_Windows|Instalando XAMPP bajo Windows]] | ##[[Instalar_Kumbia#Instalando_XAMPP_bajo_Windows|Instalando XAMPP bajo Windows]] | ||
##[[Instalar_Kumbia#Instalando_XAMPP_bajo_GNU.2FLinux|Instalando XAMPP bajo GNU/Linux]] | ##[[Instalar_Kumbia#Instalando_XAMPP_bajo_GNU.2FLinux|Instalando XAMPP bajo GNU/Linux]] | ||
− | ##Instalando XAMPP bajo Debian/Ubuntu Linux | + | ##[[Instalar_Kumbia#IInstalando XAMPP bajo Debian/Ubuntu Linux|Instalando XAMPP bajo Debian/Ubuntu Linux]] |
#[[Instalar_Kumbia#Configurar_Apache2Triad|Configurar Apache2Triad]] | #[[Instalar_Kumbia#Configurar_Apache2Triad|Configurar Apache2Triad]] | ||
− | #Verificar la instalación de Kumbia | + | #[[Instalar_Kumbia#Verificar la instalación de Kumbia|Verificar la instalación de Kumbia]] |
− | #Instalar Kumbia PHP en producción de forma segura | + | ##[[Instalar_Kumbia#Instalar Kumbia PHP en producción de forma segura| Instalar Kumbia PHP en producción de forma segura]] |
− | == [[Estructura de Kumbia]] == | + | == [[Estructura_de_Kumbia|Estructura de Kumbia]] == |
#[[Estructura_de_Kumbia#Introducci.C3.B3n|Introducción]] | #[[Estructura_de_Kumbia#Introducci.C3.B3n|Introducción]] | ||
#[[Estructura_de_Kumbia#Directorios_de_entorno|Directorios de entorno]] | #[[Estructura_de_Kumbia#Directorios_de_entorno|Directorios de entorno]] | ||
Línea 57: | Línea 66: | ||
== [[Características avanzadas]] == | == [[Características avanzadas]] == | ||
− | #¡Parámetros con Nombre! | + | #[[Caracter%C3%ADsticas_avanzadas#.C2.A1Par.C3.A1metros_con_Nombre.21|¡Parámetros con Nombre!]] |
− | #Obtener valores en una aplicación Kumbia | + | #[[Caracter%C3%ADsticas_avanzadas#Obtener_valores_en_una_aplicaci.C3.B3n_Kumbia|Obtener valores en una aplicación Kumbia]] |
− | #Uso de Paquetes (Namespaces) | + | #[[Caracter%C3%ADsticas_avanzadas#Uso_de_Paquetes_.28Namespaces.29|Uso de Paquetes (Namespaces)]] |
− | #Programación modular | + | #[[Caracter%C3%ADsticas_avanzadas#Programaci.C3.B3n_modular|Programación modular]] |
==[[Primera Aplicación en Kumbia]]== | ==[[Primera Aplicación en Kumbia]]== | ||
− | #Creando una nueva aplicación | + | #[[Primera_Aplicaci%C3%B3n_en_Kumbia#Creando_una_nueva_aplicaci.C3.B3n|Creando una nueva aplicación]] |
− | #Hola Kumbia | + | #[[Primera_Aplicaci%C3%B3n_en_Kumbia#Hola_Kumbia|Hola Kumbia]] |
− | #Kumbia URLS | + | #[[Primera_Aplicaci%C3%B3n_en_Kumbia#Kumbia_URLS|Kumbia URLS]] |
− | #Nuestra Primera Acción | + | #[[Primera_Aplicaci%C3%B3n_en_Kumbia#Nuestra_Primera_Acci.C3.B3n|Nuestra Primera Acción]] |
− | #Agregando más Contenido | + | #[[Primera_Aplicaci%C3%B3n_en_Kumbia#Agregando_m.C3.A1s_Contenido|Agregando más Contenido]] |
− | #Repitiendo la Historia | + | #[[Primera_Aplicaci%C3%B3n_en_Kumbia#Repitiendo_la_Historia|Repitiendo la Historia]] |
− | |||
= TRABAJANDO CON KUMBIA PHP FRAMEWORK= | = TRABAJANDO CON KUMBIA PHP FRAMEWORK= | ||
Línea 75: | Línea 83: | ||
=[[MODELOS]]= | =[[MODELOS]]= | ||
− | #Introducción | + | #[[MODELOS#Introducción|Introducción]] |
− | #¿Por qué usar una capa de Abstracción? | + | #[[MODELOS#¿Por qué usar una capa de Abstracción?|¿Por qué usar una capa de Abstracción?]] |
− | #Capa de Abstracción Independiente en Kumbia | + | #[[MODELOS#Capa de Abstracción Independiente en Kumbia|Capa de Abstracción Independiente en Kumbia ]] |
− | #Adaptadores Kumbia | + | #[[MODELOS#Adaptadores Kumbia|Adaptadores Kumbia]] |
− | #Esquema de Acceso a BB.DD en Kumbia | + | #[[MODELOS#Esquema de Acceso a BB.DD en Kumbia|Esquema de Acceso a BB.DD en Kumbia]] |
− | #Modelos | + | #[[MODELOS#Modelos|Modelos]] |
− | ##Características de los modelos: | + | ##[[MODELOS#Características de los modelos:|Características de los modelos:]] |
− | ##Acceso Directo a RDBMS | + | ##[[MODELOS#Acceso Directo a RDBMS|Acceso Directo a RDBMS]] |
− | ###La Clase DdBase | + | ###[[MODELOS#La Clase DdBase|La Clase DdBase]] |
− | ###Propiedades de la Clase DB | + | ###[[MODELOS#Propiedades de la Clase DB|Propiedades de la Clase DB]] |
− | ####$db->Id_Connection | + | ####[[MODELOS#$db->Id_Connection|$db->Id_Connection]] |
− | ####$db->dbUser | + | ####[[MODELOS#$db->dbUser|$db->dbUser]] |
− | ####$db->dbPass | + | ####[[MODELOS#$db->dbPass|$db->dbPass]] |
− | ####$db->dbHost | + | ####[[MODELOS#$db->dbHost|$db->dbHost]] |
− | ####$db->dbName | + | ####[[MODELOS#$db->dbName|$db->dbName]] |
− | ####$db->dbPort | + | ####[[MODELOS#$db->dbPort|$db->dbPort]] |
− | ####$db->lastError | + | ####[[MODELOS#$db->lastError|$db->lastError]] |
− | ####$db->lastResultQuery | + | ####[[MODELOS#$db->lastResultQuery|$db->lastResultQuery]] |
− | ###Métodos de la Clase DB | + | ###[[MODELOS#Métodos de la Clase DB|Métodos de la Clase DB]] |
− | ####connect() | + | ####[[MODELOS#connect()|connect()]] |
− | ####query() | + | ####[[MODELOS#query()|query()]] |
− | ####close() | + | ####[[MODELOS#close()|close()]] |
− | ####fetch_array() | + | ####[[MODELOS#fetch_array()|fetch_array()]] |
− | ####field_name() | + | ####[[MODELOS#field_name()|field_name()]] |
− | ####data_seek() | + | ####[[MODELOS#data_seek()|data_seek()]] |
− | ####affected_rows() | + | ####[[MODELOS#affected_rows()|affected_rows()]] |
− | ####error() | + | ####[[MODELOS#error()|error()]] |
− | ####no_error() | + | ####[[MODELOS#no_error()|no_error()]] |
− | ####find() | + | ####[[MODELOS#find()|find()]] |
− | ####in_query() | + | ####[[MODELOS#in_query()|in_query()]] |
− | ####in_query_assoc() | + | ####[[MODELOS#in_query_assoc()|in_query_assoc()]] |
− | ####in_query_num() | + | ####[[MODELOS#in_query_num()|in_query_num()]] |
− | ####fetch_one() | + | ####[[MODELOS#fetch_one()|fetch_one()]] |
− | ####table_exists() | + | ####[[MODELOS#table_exists()|table_exists()]] |
− | =[[ActiveRecord]]= | + | ==[[ActiveRecord|ACTIVE RECORD]]== |
#[[ActiveRecord#Ventajas del ActiveRecord|Ventajas del ActiveRecord]] | #[[ActiveRecord#Ventajas del ActiveRecord|Ventajas del ActiveRecord]] | ||
Línea 117: | Línea 125: | ||
#[[ActiveRecord#Llaves Primarias y el uso de IDs|Llaves Primarias y el uso de IDs]] | #[[ActiveRecord#Llaves Primarias y el uso de IDs|Llaves Primarias y el uso de IDs]] | ||
− | ==[[CRUD|CRUD: Create, Read, Update, Delete]]== | + | ===[[CRUD|CRUD: Create, Read, Update, Delete]]=== |
#[[CRUD#Creando Registros|Creando Registros]] | #[[CRUD#Creando Registros|Creando Registros]] | ||
Línea 127: | Línea 135: | ||
#[[CRUD#Propiedades Soportadas|Propiedades Soportadas]] | #[[CRUD#Propiedades Soportadas|Propiedades Soportadas]] | ||
− | ==[[Convenciones en ActiveRecord]]== | + | ===[[Convenciones en ActiveRecord]]=== |
#[[Convenciones en ActiveRecord#Convenciones Generales|Convenciones Generales]] | #[[Convenciones en ActiveRecord#Convenciones Generales|Convenciones Generales]] | ||
− | #[[Convenciones en ActiveRecord# | + | #[[Convenciones en ActiveRecord#id|id]] |
− | #[[Convenciones en ActiveRecord# | + | #[[Convenciones en ActiveRecord#campo_id|campo_id]] |
− | #[[Convenciones en ActiveRecord# | + | #[[Convenciones en ActiveRecord#campo_at|campo_at]] |
− | #[[Convenciones en ActiveRecord# | + | #[[Convenciones en ActiveRecord#campo_in|campo_in]] |
− | ==[[Convenciones para RDBMs]]== | + | ===[[Convenciones para RDBMs]]=== |
#[[Convenciones para RDBMs#Convenciones Especiales para PostgreSQL|Convenciones Especiales para PostgreSQL]] | #[[Convenciones para RDBMs#Convenciones Especiales para PostgreSQL|Convenciones Especiales para PostgreSQL]] | ||
#[[Convenciones para RDBMs#Convenciones Especiales para Oracle|Convenciones Especiales para Oracle]] | #[[Convenciones para RDBMs#Convenciones Especiales para Oracle|Convenciones Especiales para Oracle]] | ||
+ | ==ACTIVE RECORD API== | ||
+ | A continuación veremos una referencia de los métodos que posee la clase ActiveRecord y | ||
+ | su funcionalidad respectiva. Éstos se encuentran organizados alfabéticamente: | ||
+ | ===[[Consultas]]=== | ||
+ | Métodos para hacer consulta de Registros: | ||
+ | #[[Consultas#distinct|distinct]] | ||
+ | #[[Consultas#find_all_by_sql(string $sql)|find_all_by_sql(string $sql)]] | ||
+ | #[[Consultas#find_by_sql(string $sql)|find_by_sql(string $sql)]] | ||
+ | #[[Consultas#find_first|find_first]] | ||
+ | #[[Consultas#find|find]] | ||
+ | #[[Consultas#select_one(string $select query)|select_one(string $select query)]] | ||
+ | #[[Consultas#select_one(string $select query) (static)|select_one(string $select query) (static)]] | ||
+ | #[[Consultas#exists|exists]] | ||
+ | #[[Consultas#find_all_by|find_all_by]] | ||
+ | #[[Consultas#find_by_*campo*|find_by_*campo*]] | ||
+ | #[[Consultas#find_all_by_*campo*|find_all_by_*campo*]] | ||
− | =[[ | + | ===[[Conteos y Sumatorias]]=== |
− | + | #[[Conteos y Sumatorias#count|count]] | |
+ | #[[Conteos y Sumatorias#sum|sum]] | ||
+ | #[[Conteos y Sumatorias#count_by_sql|count_by_sql]] | ||
− | + | ===[[Promedios, Máximo y Mínimo]]=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | #[[Promedios,_M%C3%A1ximo_y_M%C3%ADnimo#average|average]] | |
+ | #[[Promedios,_M%C3%A1ximo_y_M%C3%ADnimo#maximum|maximum]] | ||
+ | #[[Promedios,_M%C3%A1ximo_y_M%C3%ADnimo#minimum|minimum]] | ||
− | + | ===[[Creación-Actualización-Borrado de Registros]]=== | |
− | |||
− | |||
− | |||
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ==[[Creación-Actualización-Borrado de Registros]]== | ||
#[[Creación-Actualización-Borrado de Registros#create|create]] | #[[Creación-Actualización-Borrado de Registros#create|create]] | ||
Línea 180: | Línea 188: | ||
#[[Creación-Actualización-Borrado de Registros#delete_all|delete_all]] | #[[Creación-Actualización-Borrado de Registros#delete_all|delete_all]] | ||
− | ==[[Validación]]== | + | ===[[Validación]]=== |
− | #validates_presence_of | + | #[[Validación#validates_presence_of|validates_presence_of]] |
− | #validates_length_of | + | #[[Validación#validates_length_of|validates_length_of]] |
− | #validates_numericality_of | + | #[[Validación#validates_numericality_of|validates_numericality_of]] |
− | #validates_email_in | + | #[[Validación#validates_email_in|validates_email_in]] |
− | #validates_uniqueness_of | + | #[[Validación#validates_uniqueness_of|validates_uniqueness_of]] |
− | #validates_date_in | + | #[[Validación#validates_date_in|validates_date_in]] |
− | #validates_format_of | + | #[[Validación#validates_format_of|validates_format_of]] |
− | ==[[Transacciones]]== | + | ===[[Transacciones]]=== |
#[[Transacciones#commit()|commit()]] | #[[Transacciones#commit()|commit()]] | ||
Línea 196: | Línea 204: | ||
#[[Transacciones#rollback()|rollback()]] | #[[Transacciones#rollback()|rollback()]] | ||
− | ==[[Otros Métodos]]== | + | ===[[Otros Métodos]]=== |
+ | |||
+ | #[[Otros Métodos#sql(string $sql)|sql(string $sql)]] | ||
+ | |||
+ | ===[[Callbacks ActiveRecord]]=== | ||
+ | |||
+ | #[[Callbacks ActiveRecord#Introduccion|Introduccion]] | ||
+ | #[[Callbacks ActiveRecord#before_validation|before_validation]] | ||
+ | #[[Callbacks ActiveRecord#before_validation_on_create|before_validation_on_create]] | ||
+ | #[[Callbacks ActiveRecord#before_validation_on_update|before_validation_on_update]] | ||
+ | #[[Callbacks ActiveRecord#after_validation_on_create|after_validation_on_create]] | ||
+ | #[[Callbacks ActiveRecord#after_validation_on_update|after_validation_on_update]] | ||
+ | #[[Callbacks ActiveRecord#after_validation|after_validation]] | ||
+ | #[[Callbacks ActiveRecord#before_save|before_save]] | ||
+ | #[[Callbacks ActiveRecord#before_update|before_update]] | ||
+ | #[[Callbacks ActiveRecord#before_create|before_create]] | ||
+ | #[[Callbacks ActiveRecord#after_update|after_update]] | ||
+ | #[[Callbacks ActiveRecord#after_create|after_create]] | ||
+ | #[[Callbacks ActiveRecord#after_save|after_save]] | ||
+ | #[[Callbacks ActiveRecord#before_delete|before_delete]] | ||
+ | #[[Callbacks ActiveRecord#after_delete|after_delete]] | ||
+ | |||
+ | ===[[Asociaciones]]=== | ||
+ | |||
+ | #[[Asociaciones#Introducción|Introducción]] | ||
+ | #[[Asociaciones#Pertenece (belongs_to)|Pertenece (belongs_to)]] | ||
+ | #[[Asociaciones#Tiene un (has_one)|Tiene un (has_one)]] | ||
+ | #[[Asociaciones#Tiene muchos (has_many)|Tiene muchos (has_many)]] | ||
+ | #[[Asociaciones#Tiene y pertenece a muchos (has_and_belongs_to_many)|Tiene y pertenece a muchos (has_and_belongs_to_many)]] | ||
+ | |||
+ | ===[[Paginadores]]=== | ||
+ | |||
+ | #[[Paginadores#Paginate|Paginate]] | ||
+ | #[[Paginadores#Paginate_by_sql|Paginate_by_sql]] | ||
+ | #[[Paginadores#Paginando en ActiveRecord|Paginando en ActiveRecord]] | ||
+ | #[[Paginadores#Ejemplo completo de uso del paginador|Ejemplo completo de uso del paginador]] | ||
+ | |||
+ | =[[Application controller| APPLICATION CONTROLLER]]= | ||
+ | === [[Application_controller#M.C3.A9todos_de_la_Clase_ApplicationController| Métodos de la Clase ApplicationController]] === | ||
+ | La clase posee una serie de métodos que son útiles para el trabajo con controladores. | ||
+ | = Métodos de la Clase ApplicationController = | ||
+ | |||
+ | La clase posee una serie de métodos que son útiles para el trabajo con controladores. | ||
+ | |||
+ | == render($view) == | ||
+ | |||
+ | Visualiza una vista que pertenece al mismo controlador. | ||
+ | |||
+ | '''Ejemplos de uso:''' | ||
+ | <?php | ||
+ | class ProductosController extends ApplicationController { | ||
+ | function index(){ | ||
+ | $this->render('consultar'); | ||
+ | } | ||
+ | } //fin de la clase | ||
+ | ?> | ||
+ | |||
+ | En este caso se visualizaría la vista views/productos/consultar.phtml | ||
+ | |||
+ | == redirect($url, $seconds=0.5) == | ||
+ | Redirecciona la ejecución a otro controlador en un tiempo de ejecución determinado | ||
+ | |||
+ | '''Ejemplos de uso:''' | ||
+ | <?php | ||
+ | class ProductosController extends ApplicationController { | ||
+ | function index(){ | ||
+ | $this->redirect('facturas/nueva', 2); | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | En el ejemplo va a facturas/nueva después de 2 segundos | ||
+ | |||
+ | == post($value) == | ||
+ | |||
+ | Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para pasar | ||
+ | al array asociativo. | ||
+ | |||
+ | == get($value) == | ||
+ | |||
+ | Obtiene acceso orientado a objetos a los valores de $_GET, $value es el índice para pasar al array asociativo. | ||
+ | |||
+ | == request($value) == | ||
+ | |||
+ | Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para pasar al | ||
+ | array asociativo. | ||
+ | |||
+ | == render_partial($name) == | ||
+ | Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo: | ||
+ | |||
+ | '''Ejemplos de uso:''' | ||
+ | <?php | ||
+ | class ProductosController extends ApplicationController { | ||
+ | function index(){ | ||
+ | $this->render_partial('mostrar_menu'); | ||
+ | }//fin del metodo | ||
+ | }//fin de la clase | ||
+ | ?> | ||
+ | |||
+ | En este caso se visualizaría la vista parcial views/productos/_mostrar_menu.phtml | ||
+ | |||
+ | == route_to([params: valor]) == | ||
+ | Hace el enrutamiento desde un controlador a otro, o desde una acción a otra. Recibe los parámetros | ||
+ | con nombre: | ||
+ | • controller: A qué controlador se va a redireccionar | ||
+ | • action: A que acción se va a redireccionar | ||
+ | • id: Id de la redirección | ||
+ | |||
+ | '''Ejemplos:''' | ||
+ | return $this->route_to("controller: clientes", "action: consultar", "id:1"); | ||
+ | |||
+ | El tipo de enrutamiento que realiza es interno, es decir que lo usuarios no notan cuando están siendo redireccionados en la aplicación. | ||
+ | |||
+ | == redirect($url_controlador) == | ||
+ | Realiza un redireccionamiento a otro controlador/accion mediante HTTP. Es útil cuando queremos hacer | ||
+ | una real redirección que incluso cambie la URL que aparece en el explorador. | ||
+ | |||
+ | '''Ejemplo:''' | ||
+ | $this->redirect(“/productos/query”); | ||
+ | |||
+ | == cache_layout($minutes) == | ||
+ | Caché de la vista views/layout/ correspondiente al controlador durante $minutes. | ||
+ | |||
+ | == not_found($controller, $action) === | ||
+ | Puedes definir el método not_found en cualquier controlador, en caso de estar definido se llamará | ||
+ | cuando no encuentre definida alguna acción así es más fácil controlar este tipo de errores: | ||
+ | |||
+ | ''' Ejemplo ''' | ||
+ | <?php | ||
+ | class PruebaController extends ApplicationController { | ||
+ | function index(){ | ||
+ | $this->render_text("Este es el index"); | ||
+ | } | ||
+ | function not_found($controller, $action){ | ||
+ | Flash::error("No esta definida la accion $action, redireccionando a index..."); | ||
+ | return $this->route_to('action: index'); | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | NOTA: Ahora en la versión 0.5 se incluye un vista views/not_found.phtml, esto | ||
+ | hace que no se haga necesario la implementacion del metodo not_found, ya que cuando no exista un controller o una acción se renderizara dicha vista, esta puede ser totalmente personalizada de manera que sea mas comodo el desarrollo. | ||
+ | |||
+ | == set_response($type)== | ||
+ | Especifica el tipo de respuesta que va a generar el controlador. Cuando es el valor de $type | ||
+ | es view solamente envía la salida de la vista más no del layout, el template o cualquier cabecera | ||
+ | html. Es ideal en salidas AJAX o PDF. Otro valor para $type es XML. | ||
+ | |||
+ | '''Ejemplo''' | ||
+ | <?php | ||
+ | class PruebaController extends ApplicationController { | ||
+ | function accion_ajax(){ | ||
+ | $this->set_response(“view”); | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | == is_alnum($valor) == | ||
+ | Evalúa si un campo es alfanumérico o no. Es útil para validar la entrada de datos al | ||
+ | recibirlos por parte de usuarios. | ||
+ | |||
+ | <?php | ||
+ | class PruebaController extends ApplicationController { | ||
+ | function adicionar(){ | ||
+ | $nombre = $this->request(“nombre”); | ||
+ | if($this->is_alnum($nombre)==false){ | ||
+ | Flash::error(“Entrada invalidad para precio”); | ||
+ | return; | ||
+ | } | ||
+ | /* ..*/ | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | == load_record($record) == | ||
+ | Carga los campos de un registro ActiveRecord como atributos del controlador, recibe | ||
+ | como parámetro $record ActiveRecord o string registro ActiveRecord a cargar, si es un | ||
+ | string este debe corresponder al nombre de un modelo Soporta argumento variable. | ||
+ | field: campos a cargar separados por coma | ||
+ | except: campos que no se cargaran separados por coma | ||
+ | suffix: sufijo para el atributo en el controlador | ||
+ | preffix: prefijo para el atributo en el controlador | ||
+ | |||
+ | //Ejemplo1: | ||
+ | $usuario = $this->Usuario->find(1); | ||
+ | $this->load_record($usuario); | ||
+ | |||
+ | //Ejemplo2: | ||
+ | $usuario = $this->Usuario->find(); | ||
+ | $this->load_record($usuario, 'except: id, sexo'); | ||
− | + | //Ejemplo3: | |
+ | $usuario = $this->Usuario->find(0); | ||
+ | $this->load_record($usuario, 'field: nombre, apellido'); | ||
− | = | + | //Ejemplo4: |
+ | $usuario = $this->Usuario->find(1); | ||
+ | $this->load_record($usuario, 'preffix: c_'); | ||
− | + | //Ejemplo5: | |
− | + | $this->load_record('Usuario'); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | //Ejemplo6: | |
+ | $this->load_record('Usuario', 'field: nombre, apellido'); | ||
− | + | == is_numeric($valor) == | |
+ | Evalúa si un campo es numérico o no. Es útil para validar la entrada de datos al recibirlos por parte de usuarios. | ||
− | + | <?php | |
+ | class PruebaController extends ApplicationController { | ||
+ | function adicionar(){ | ||
+ | $precio = $this->request(“precio”); | ||
+ | if($this->is_numeric($precio)!= '1'){ | ||
+ | Flash::error(“Entrada invalida para precio”); | ||
+ | return; | ||
+ | } | ||
+ | /* ..*/ | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
− | = | + | ===[[Obtener valores desde el controller]] === |
− | = | + | ===[[ApplicationControllerBase| ApplicationControllerBase (Clase padre)]] === |
+ | ===[[Enrutamiento y redirecciones]] === | ||
− | = | + | =[[Vistas|VISTAS Y HELPERS]]= |
+ | #[[Vistas#¿Porque usar Vistas?|¿Porque usar vistas?]] | ||
+ | ===[[Vistas#Uso de Vistas|Vistas]]=== | ||
+ | ===[[Vistas#Uso de Layouts|Layouts]]=== | ||
+ | ===[[Vistas#Uso de Templates|Templates]]=== | ||
+ | ===[[Vistas#Uso de Partials|Partials]]=== | ||
+ | ===[[Vistas#Uso de CCS en Kumbia|CCS en KumbiaPHP]]=== | ||
+ | ===[[Vistas#Uso de content()|content()]]=== | ||
+ | ==[[Vistas#|Helpers]]== | ||
− | = | + | =[[AJAX]]= |
+ | =[[EXTENSIONS (Módulos extras de KumbiaPHP)]]= | ||
+ | ==[[Filter]]== | ||
− | + | #[[Filter#Qu.C3.A9_es_un_Filtro| Qué es un Filtro?]] | |
+ | #[[Filter#Utilizaci.C3.B3n_B.C3.A1sica| Utilización básica]] | ||
+ | #[[Filter#M.C3.A9todos_de_la_clase_Filter| Métodos de la clase Filter]] | ||
+ | =[[GENERADOR DE FORMULARIOS]]= | ||
− | + | #[[GENERADOR DE FORMULARIOS#|Tipos de Formularios]] | |
+ | #[[GENERADOR DE FORMULARIOS#|Ventajas Generadores de Formularios]] | ||
+ | #[[GENERADOR DE FORMULARIOS#|Desventajas Generadores de Formularios]] | ||
+ | =[[EJEMPLOS]]= | ||
− | = | + | =[[GLOSARIO]]= |
Revisión actual del 11:17 9 nov 2021
Nuevo manual actualizado para la v1 en español e ingles en Manual KumbiaPHP en Github
Este manual esta portándose del Manual PDF de KumbiaPHP Framework.
Esta abierto, para que la comunidad ayude a portarlo y mejorarlo. Más adelante, el manual en PDF se creará de este wiki.
Sumario
- 1 AGRADECIMIENTOS
- 2 PREFACIO
- 3 EMPEZANDO CON KUMBIA PHP FRAMEWORK
- 4 TRABAJANDO CON KUMBIA PHP FRAMEWORK
- 5 MODELOS
- 6 APPLICATION CONTROLLER
- 7 Métodos de la Clase ApplicationController
- 7.1 render($view)
- 7.2 redirect($url, $seconds=0.5)
- 7.3 post($value)
- 7.4 get($value)
- 7.5 request($value)
- 7.6 render_partial($name)
- 7.7 route_to([params: valor])
- 7.8 redirect($url_controlador)
- 7.9 cache_layout($minutes)
- 7.10 not_found($controller, $action) =
- 7.11 set_response($type)
- 7.12 is_alnum($valor)
- 7.13 load_record($record)
- 8 VISTAS Y HELPERS
- 9 AJAX
- 10 EXTENSIONS (Módulos extras de KumbiaPHP)
- 11 GENERADOR DE FORMULARIOS
- 12 EJEMPLOS
- 13 GLOSARIO
AGRADECIMIENTOS[editar]
Este manual es para agradecer a los que con su tiempo y apoyo en gran o en poca medida han ayudado a que este framework sea cada día mejor. A todos ellos Gracias Totales: Andres Felipe Gutierrez gutierrezandresfelipe@gmail.com Deivinson Tejeda deivinsontejeda@kumbiaphp.com Emilio Silveira emilio.rst@kumbiaphp.com César Caballero aka Phillipo phillipo@kumbiaphp.com
PREFACIO[editar]
- Sobre este libro
- Sobre Kumbia
- Sobre la comunidad
- Historia de Kumbia
- Que aporta Kumbia
- ¿Porque usar Kumbia?
- Modelo, Vista, Controlador (MVC)
EMPEZANDO CON KUMBIA PHP FRAMEWORK[editar]
Instalar Kumbia [editar]
- Requisitos
- Descargar Kumbia
- Configuración de módulos (Apache, PHP y bbdd)
- Configurar XAMPP
- Configurar Apache2Triad
- Verificar la instalación de Kumbia
Estructura de Kumbia[editar]
Características avanzadas[editar]
- ¡Parámetros con Nombre!
- Obtener valores en una aplicación Kumbia
- Uso de Paquetes (Namespaces)
- Programación modular
Primera Aplicación en Kumbia[editar]
- Creando una nueva aplicación
- Hola Kumbia
- Kumbia URLS
- Nuestra Primera Acción
- Agregando más Contenido
- Repitiendo la Historia
TRABAJANDO CON KUMBIA PHP FRAMEWORK[editar]
MODELOS[editar]
- Introducción
- ¿Por qué usar una capa de Abstracción?
- Capa de Abstracción Independiente en Kumbia
- Adaptadores Kumbia
- Esquema de Acceso a BB.DD en Kumbia
- Modelos
ACTIVE RECORD[editar]
- Ventajas del ActiveRecord
- Crear un Modelo en Kumbia PHP Framework
- Columnas y Atributos
- Llaves Primarias y el uso de IDs
CRUD: Create, Read, Update, Delete[editar]
- Creando Registros
- Consultando Registros
- El poderoso Find
- Promedio, Contando, Sumando, Mínimo y Máximo
- Actualizando Registros existentes
- Borrando Registros
- Propiedades Soportadas
Convenciones en ActiveRecord[editar]
Convenciones para RDBMs[editar]
ACTIVE RECORD API[editar]
A continuación veremos una referencia de los métodos que posee la clase ActiveRecord y su funcionalidad respectiva. Éstos se encuentran organizados alfabéticamente:
Consultas[editar]
Métodos para hacer consulta de Registros:
- distinct
- find_all_by_sql(string $sql)
- find_by_sql(string $sql)
- find_first
- find
- select_one(string $select query)
- select_one(string $select query) (static)
- exists
- find_all_by
- find_by_*campo*
- find_all_by_*campo*
Conteos y Sumatorias[editar]
Promedios, Máximo y Mínimo[editar]
Creación-Actualización-Borrado de Registros[editar]
Validación[editar]
- validates_presence_of
- validates_length_of
- validates_numericality_of
- validates_email_in
- validates_uniqueness_of
- validates_date_in
- validates_format_of
Transacciones[editar]
Otros Métodos[editar]
Callbacks ActiveRecord[editar]
- Introduccion
- before_validation
- before_validation_on_create
- before_validation_on_update
- after_validation_on_create
- after_validation_on_update
- after_validation
- before_save
- before_update
- before_create
- after_update
- after_create
- after_save
- before_delete
- after_delete
Asociaciones[editar]
- Introducción
- Pertenece (belongs_to)
- Tiene un (has_one)
- Tiene muchos (has_many)
- Tiene y pertenece a muchos (has_and_belongs_to_many)
Paginadores[editar]
APPLICATION CONTROLLER[editar]
Métodos de la Clase ApplicationController[editar]
La clase posee una serie de métodos que son útiles para el trabajo con controladores.
Métodos de la Clase ApplicationController[editar]
La clase posee una serie de métodos que son útiles para el trabajo con controladores.
render($view)[editar]
Visualiza una vista que pertenece al mismo controlador.
Ejemplos de uso:
<?php class ProductosController extends ApplicationController { function index(){ $this->render('consultar'); } } //fin de la clase ?>
En este caso se visualizaría la vista views/productos/consultar.phtml
redirect($url, $seconds=0.5)[editar]
Redirecciona la ejecución a otro controlador en un tiempo de ejecución determinado
Ejemplos de uso:
<?php class ProductosController extends ApplicationController { function index(){ $this->redirect('facturas/nueva', 2); } } ?>
En el ejemplo va a facturas/nueva después de 2 segundos
post($value)[editar]
Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para pasar al array asociativo.
get($value)[editar]
Obtiene acceso orientado a objetos a los valores de $_GET, $value es el índice para pasar al array asociativo.
request($value)[editar]
Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para pasar al array asociativo.
render_partial($name)[editar]
Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo:
Ejemplos de uso:
<?php class ProductosController extends ApplicationController { function index(){ $this->render_partial('mostrar_menu'); }//fin del metodo }//fin de la clase ?>
En este caso se visualizaría la vista parcial views/productos/_mostrar_menu.phtml
route_to([params: valor])[editar]
Hace el enrutamiento desde un controlador a otro, o desde una acción a otra. Recibe los parámetros
con nombre:
• controller: A qué controlador se va a redireccionar • action: A que acción se va a redireccionar • id: Id de la redirección
Ejemplos: return $this->route_to("controller: clientes", "action: consultar", "id:1");
El tipo de enrutamiento que realiza es interno, es decir que lo usuarios no notan cuando están siendo redireccionados en la aplicación.
redirect($url_controlador)[editar]
Realiza un redireccionamiento a otro controlador/accion mediante HTTP. Es útil cuando queremos hacer una real redirección que incluso cambie la URL que aparece en el explorador.
Ejemplo: $this->redirect(“/productos/query”);
cache_layout($minutes)[editar]
Caché de la vista views/layout/ correspondiente al controlador durante $minutes.
not_found($controller, $action) =[editar]
Puedes definir el método not_found en cualquier controlador, en caso de estar definido se llamará cuando no encuentre definida alguna acción así es más fácil controlar este tipo de errores:
Ejemplo
<?php class PruebaController extends ApplicationController { function index(){ $this->render_text("Este es el index"); } function not_found($controller, $action){ Flash::error("No esta definida la accion $action, redireccionando a index..."); return $this->route_to('action: index'); } } ?>
NOTA: Ahora en la versión 0.5 se incluye un vista views/not_found.phtml, esto hace que no se haga necesario la implementacion del metodo not_found, ya que cuando no exista un controller o una acción se renderizara dicha vista, esta puede ser totalmente personalizada de manera que sea mas comodo el desarrollo.
set_response($type)[editar]
Especifica el tipo de respuesta que va a generar el controlador. Cuando es el valor de $type es view solamente envía la salida de la vista más no del layout, el template o cualquier cabecera html. Es ideal en salidas AJAX o PDF. Otro valor para $type es XML.
Ejemplo
<?php class PruebaController extends ApplicationController { function accion_ajax(){ $this->set_response(“view”); } } ?>
is_alnum($valor)[editar]
Evalúa si un campo es alfanumérico o no. Es útil para validar la entrada de datos al recibirlos por parte de usuarios.
<?php class PruebaController extends ApplicationController { function adicionar(){ $nombre = $this->request(“nombre”); if($this->is_alnum($nombre)==false){ Flash::error(“Entrada invalidad para precio”); return; } /* ..*/ } } ?>
load_record($record)[editar]
Carga los campos de un registro ActiveRecord como atributos del controlador, recibe como parámetro $record ActiveRecord o string registro ActiveRecord a cargar, si es un string este debe corresponder al nombre de un modelo Soporta argumento variable.
field: campos a cargar separados por coma except: campos que no se cargaran separados por coma suffix: sufijo para el atributo en el controlador preffix: prefijo para el atributo en el controlador
//Ejemplo1: $usuario = $this->Usuario->find(1); $this->load_record($usuario);
//Ejemplo2: $usuario = $this->Usuario->find(); $this->load_record($usuario, 'except: id, sexo');
//Ejemplo3: $usuario = $this->Usuario->find(0); $this->load_record($usuario, 'field: nombre, apellido');
//Ejemplo4: $usuario = $this->Usuario->find(1); $this->load_record($usuario, 'preffix: c_');
//Ejemplo5: $this->load_record('Usuario');
//Ejemplo6: $this->load_record('Usuario', 'field: nombre, apellido');
== is_numeric($valor) ==
Evalúa si un campo es numérico o no. Es útil para validar la entrada de datos al recibirlos por parte de usuarios.
<?php class PruebaController extends ApplicationController { function adicionar(){ $precio = $this->request(“precio”); if($this->is_numeric($precio)!= '1'){ Flash::error(“Entrada invalida para precio”); return; } /* ..*/ } } ?>