Revisión actual |
Tu texto |
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 8: |
Línea 5: |
| | | |
| = [[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 48: |
Línea 40: |
| #[[Instalar_Kumbia#Configurar_Apache2Triad|Configurar Apache2Triad]] | | #[[Instalar_Kumbia#Configurar_Apache2Triad|Configurar Apache2Triad]] |
| #[[Instalar_Kumbia#Verificar la instalación de Kumbia|Verificar la instalación de Kumbia]] | | #[[Instalar_Kumbia#Verificar la instalación de Kumbia|Verificar la instalación de Kumbia]] |
− | ##[[Instalar_Kumbia#Instalar Kumbia PHP en producción de forma segura| Instalar Kumbia PHP en producción de forma segura]] | + | ##[[Instalar_Kumbia#Instalar Kumbia PHP en producción de forma segura|VInstalar Kumbia PHP en producción de forma segura]] |
| | | |
| == [[Estructura_de_Kumbia|Estructura de Kumbia]] == | | == [[Estructura_de_Kumbia|Estructura de Kumbia]] == |
Línea 118: |
Línea 110: |
| ####[[MODELOS#table_exists()|table_exists()]] | | ####[[MODELOS#table_exists()|table_exists()]] |
| | | |
− | ==[[ActiveRecord|ACTIVE RECORD]]==
| + | =[[ActiveRecord|ACTIVE RECORD]]= |
| | | |
| #[[ActiveRecord#Ventajas del ActiveRecord|Ventajas del ActiveRecord]] | | #[[ActiveRecord#Ventajas del ActiveRecord|Ventajas del ActiveRecord]] |
Línea 125: |
Línea 117: |
| #[[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 135: |
Línea 127: |
| #[[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]] |
Línea 143: |
Línea 135: |
| #[[Convenciones en ActiveRecord#campo_in|campo_in]] | | #[[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==
| + | =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]]== |
− | ===[[Consultas]]===
| + | |
− | Métodos para hacer consulta de Registros:
| |
| #[[Consultas#distinct|distinct]] | | #[[Consultas#distinct|distinct]] |
| #[[Consultas#find_all_by_sql(string $sql)|find_all_by_sql(string $sql)]] | | #[[Consultas#find_all_by_sql(string $sql)|find_all_by_sql(string $sql)]] |
Línea 165: |
Línea 156: |
| #[[Consultas#find_all_by_*campo*|find_all_by_*campo*]] | | #[[Consultas#find_all_by_*campo*|find_all_by_*campo*]] |
| | | |
− | ===[[Conteos y Sumatorias]]=== | + | ==Conteos y Sumatorias== |
| | | |
− | #[[Conteos y Sumatorias#count|count]]
| + | #count |
− | #[[Conteos y Sumatorias#sum|sum]] | + | #sum |
− | #[[Conteos y Sumatorias#count_by_sql|count_by_sql]] | + | #count_by_sql |
| | | |
− | ===[[Promedios, Máximo y Mínimo]]===
| + | ==[[Promedios, Máximo y Mínimo]]== |
| | | |
| #[[Promedios,_M%C3%A1ximo_y_M%C3%ADnimo#average|average]] | | #[[Promedios,_M%C3%A1ximo_y_M%C3%ADnimo#average|average]] |
Línea 177: |
Línea 168: |
| #[[Promedios,_M%C3%A1ximo_y_M%C3%ADnimo#minimum|minimum]] | | #[[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 188: |
Línea 179: |
| #[[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]]== |
| | | |
| #[[Validación#validates_presence_of|validates_presence_of]] | | #[[Validación#validates_presence_of|validates_presence_of]] |
Línea 198: |
Línea 189: |
| #[[Validación#validates_format_of|validates_format_of]] | | #[[Validación#validates_format_of|validates_format_of]] |
| | | |
− | ===[[Transacciones]]===
| + | ==[[Transacciones]]== |
| | | |
| #[[Transacciones#commit()|commit()]] | | #[[Transacciones#commit()|commit()]] |
Línea 204: |
Línea 195: |
| #[[Transacciones#rollback()|rollback()]] | | #[[Transacciones#rollback()|rollback()]] |
| | | |
− | ===[[Otros Métodos]]===
| + | ==[[Otros Métodos]]== |
| | | |
| #[[Otros Métodos#sql(string $sql)|sql(string $sql)]] | | #[[Otros Métodos#sql(string $sql)|sql(string $sql)]] |
| | | |
− | ===[[Callbacks ActiveRecord]]===
| + | ==[[Callbacks ActiveRecord]]== |
| | | |
| #[[Callbacks ActiveRecord#Introduccion|Introduccion]] | | #[[Callbacks ActiveRecord#Introduccion|Introduccion]] |
Línea 226: |
Línea 217: |
| #[[Callbacks ActiveRecord#after_delete|after_delete]] | | #[[Callbacks ActiveRecord#after_delete|after_delete]] |
| | | |
− | ===[[Asociaciones]]===
| + | ==[[Asociaciones]]== |
| | | |
| #[[Asociaciones#Introducción|Introducción]] | | #[[Asociaciones#Introducción|Introducción]] |
Línea 234: |
Línea 225: |
| #[[Asociaciones#Tiene y pertenece a muchos (has_and_belongs_to_many)|Tiene y pertenece a muchos (has_and_belongs_to_many)]] | | #[[Asociaciones#Tiene y pertenece a muchos (has_and_belongs_to_many)|Tiene y pertenece a muchos (has_and_belongs_to_many)]] |
| | | |
− | ===[[Paginadores]]=== | + | ==Paginadores== |
| | | |
− | #[[Paginadores#Paginate|Paginate]]
| + | ==Ejemplo Completo== |
− | #[[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 = |
− | === [[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.
| + | = VIEWS Y HELPERS = |
− | | |
− | == 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]]= | | =[[AJAX]]= |
| | | |
− | =[[EXTENSIONS (Módulos extras de KumbiaPHP)]]= | + | =[[MODULOS EXTRAS]]= |
− | ==[[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]]= |
− |
| |
− | #[[GENERADOR DE FORMULARIOS#|Tipos de Formularios]]
| |
− | #[[GENERADOR DE FORMULARIOS#|Ventajas Generadores de Formularios]]
| |
− | #[[GENERADOR DE FORMULARIOS#|Desventajas Generadores de Formularios]]
| |
| | | |
| =[[EJEMPLOS]]= | | =[[EJEMPLOS]]= |
| | | |
| =[[GLOSARIO]]= | | =[[GLOSARIO]]= |