Edición de «Indice»

De KumbiaPHP Framework Wiki

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.

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]]
 
#[[Conteos y Sumatorias#count|count]]
Línea 171: Línea 162:
 
#[[Conteos y Sumatorias#count_by_sql|count_by_sql]]
 
#[[Conteos y Sumatorias#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]]
 
#[[Paginadores#Paginate|Paginate]]
Línea 241: Línea 232:
 
#[[Paginadores#Ejemplo completo de uso del paginador|Ejemplo completo de uso del paginador]]
 
#[[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) ==
+
=[[APPLICATION CONTROLLER]]=
  
Visualiza una vista que pertenece al mismo controlador.
+
=[[VIEWS Y HELPERS]]=
  
'''Ejemplos de uso:'''
+
=[[AJAX]]=
<?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
+
=[[EXTENSIONS (Módulos extras de KumbiaPHP)]]=
 +
='''Filter'''=
  
== redirect($url, $seconds=0.5) ==
+
Para la Versión 0.5 se incorpora el componente Filter el cual proporciona un conjunto
Redirecciona la ejecución a otro controlador en un tiempo de ejecución determinado
+
de filtros que serán aplicados a datos que lo requieran.
  
'''Ejemplos de uso:'''
+
=='''Que es un Filtro?'''==
  <?php
+
Un filtro es utilizado habitualmente para eliminar porciones no deseadas de una entrada
    class ProductosController extends ApplicationController {
+
de datos, y la porción deseada de la entrada pasa a través de la producción como filtro
      function index(){
+
(por ejemplo, café). En estos escenarios, un filtro es un operador que produce un
        $this->redirect('facturas/nueva', 2);
+
subconjunto de la entrada.
      }
 
    }
 
  ?>
 
  
En el ejemplo va a facturas/nueva después de 2 segundos
+
Este tipo de filtro es útil para aplicaciones web - la supresión
 +
de entrada ilegal, innecesario el recorte de los espacios en blanco, etc.
  
== post($value) ==
+
Esta definición básica de un filtro puede ser ampliado para incluir a las transformaciones
 +
generalizadas de entrada. Una transformación que se debe aplicar a las aplicaciones web
 +
es el escapar de las entidades HTML.
  
    Obtiene acceso orientado a objetos a los valores de $_POST, $value es el índice para pasar
+
Por ejemplo, si un campo de formulario es
al array asociativo.
+
automáticamente poco fiable de entrada, este valor debe ser libre de las entidades
 +
HTML, a fin de evitar las vulnerabilidades de seguridad. Para cumplir con este requisito,
 +
las entidades HTML que aparecen en la entrada debe ser eliminado o que se hayan
 +
escapado.
  
== get($value) ==
+
Por supuesto, el enfoque que es más apropiado depende de la situación. Un filtro
 +
que elimina las entidades HTML opera dentro del ámbito de aplicación de la primera
 +
definición de filtro - un operador que produce un subconjunto de la entrada.
  
    Obtiene acceso orientado a objetos a los valores de $_GET, $value es el índice para pasar al array asociativo.
+
=='''Utilización Básica'''==
 +
En este ejemplo se le pasa por el constructor de class Filter dos(upper, htmlspecialchars)
 +
filtros que serán aplicados a la cadena.
 +
<source lang=php line>
 +
$filter = new Filter('upper', 'htmlspecialchars');
 +
$var = '<b>Hola</b>';
 +
print_r($filter->apply($var)); //<B>HOLA</B>
 +
</source>
 +
A continuación se aplica el filtro de manera dinámica.
 +
<source lang=php line>
 +
$filter = new Filter();
 +
$var = '<b>Hola</b>';
 +
print_r( $filter->apply_filter($var, 'upper', 'htmlspecialchars')) //<B>HOLA</B>
 +
</source>
  
== request($value) ==
+
Otra forma de aplicar filtros
 +
<source lang=php line>
 +
$var = '<b>Hola</b>';
 +
$filter = new Filter('upper', 'htmlspecialchars');
 +
print_r ($filter->filter_value($var));
 +
Adicionalmente los filtros soportan como parámetros a filtrar array
 +
$var = array('<b>Hola</b>');
 +
$filter = new Filter('upper', 'htmlspecialchars');
 +
print_r( $filter->apply($var));//<B>HOLA</B>
 +
</source>
  
    Obtiene acceso orientado a objetos a los valores de $_REQUEST, $value es el índice para pasar al
+
=='''Métodos de la clase Filter'''==
array asociativo.
 
  
== render_partial($name) ==
+
A continuación se listan los métodos disponibles en la clase filter, el constructor de la
Visualiza una vista parcial (partial) que pertenece al mismo controlador. Ejemplo:
+
clase filter puede recibir los filtros a ser aplicados.
  
'''Ejemplos de uso:'''
+
==='''Add_filter($filter)'''===
  <?php
+
Agregar un filtro a la cola de filtros.
    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
+
==='''Apply($var, [filters])''' y '''apply_filter($var, [filters])'''===
 +
Aplica un filtros o un grupo de filtros a la variable $var.
  
== route_to([params: valor]) ==
+
==='''Get_instance()'''===
  Hace el enrutamiento desde un controlador a otro, o desde una acción a otra. Recibe los parámetros
+
Obtiene una instancia singlenton.
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:'''
+
==='''Filtros Disponibles'''===
return $this->route_to("controller: clientes", "action: consultar", "id:1");
+
Actualmente se cuenta con una serie de filtros que pueden utilizados.
  
El tipo de enrutamiento que realiza es interno, es decir que lo usuarios no notan cuando están siendo redireccionados en la aplicación.
+
==='''Addslashes'''===
 +
Filtra una cadena haciendo addslashes
  
== redirect($url_controlador) ==
+
==='''Alnun'''===
    Realiza un redireccionamiento a otro controlador/accion mediante HTTP. Es útil cuando queremos hacer
+
Filtra una cadena para que contenga solo alpha-numeic.
una real redirección que incluso cambie la URL que aparece en el explorador.
 
  
'''Ejemplo:'''
+
==='''Alpha'''===
$this->redirect(“/productos/query”);
+
Filtra una cadena para que contenga solo alfabético
  
== cache_layout($minutes) ==
+
==='''Date'''===
    Caché de la vista views/layout/ correspondiente al controlador durante $minutes.
+
Filtra una cadena para que contenga el formato fecha, debe cumplir con un patrón.
  
== not_found($controller, $action) ===
+
==='''Digit'''===
    Puedes definir el método not_found en cualquier controlador, en caso de estar definido se llamará
+
Filtra una cadena para que contenga solo Dígitos, sigue siendo un string lo que retorna el
cuando no encuentre definida alguna acción así es más fácil controlar este tipo de errores:
+
método.
  
''' Ejemplo '''
+
==='''Htmlentities'''===
  <?php
+
Filtra una cadena y hace que todos los caracteres que tengan una entidad equivalente en
    class PruebaController extends ApplicationController {
+
HTML serán cambiados a esas entidades.
        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
+
==='''htmlspecialchars'''===
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.
+
Filtra una cadena htmlspacialchars.
  
== set_response($type)==
+
==='''Upper'''===
    Especifica el tipo de respuesta que va a generar el controlador. Cuando es el valor de $type
+
Filtra una cadena para que contenga solo Mayusculas
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'''
+
==='''Trim'''===
  <?php
+
Filtra una cadena haciendo trim
    class PruebaController extends ApplicationController {
 
        function accion_ajax(){
 
            $this->set_response(“view”);
 
        }
 
    }
 
  ?>
 
  
== is_alnum($valor) ==
+
==='''Striptags'''===
Evalúa si un campo es alfanumérico o no. Es útil para validar la entrada de datos al
+
Filtra una cadena para eliminar etiquetas
recibirlos por parte de usuarios.
 
  
  <?php
+
==='''Stripspace'''===
    class PruebaController extends ApplicationController {
+
Filtra una cadena para eliminar espacios
        function adicionar(){
 
          $nombre = $this->request(“nombre”);
 
          if($this->is_alnum($nombre)==false){
 
              Flash::error(“Entrada invalidad para precio”);
 
              return;
 
            }
 
          /* ..*/
 
      }
 
    }
 
  ?>
 
  
== load_record($record) ==
+
==='''Stripslaches'''===
Carga los campos de un registro ActiveRecord como atributos del controlador, recibe
+
Filtra una cadena haciendo stripslashes
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:
+
==='''Numeric'''===
$usuario = $this->Usuario->find(1);
+
Filtra una cadena para que contenga solo numerico.
$this->load_record($usuario);
 
  
//Ejemplo2:
+
==='''Nl2br'''===
$usuario = $this->Usuario->find();
+
Filtra una cadena convirtiendo caracteres de nueva linea en <br>
$this->load_record($usuario, 'except: id, sexo');
 
  
//Ejemplo3:
+
==='''Md5'''===
$usuario = $this->Usuario->find(0);
+
Filtra una cadena encriptando a md5.
$this->load_record($usuario, 'field: nombre, apellido');
 
  
//Ejemplo4:
+
==='''Lower'''===
$usuario = $this->Usuario->find(1);
+
Filtra una cadena para que contenga solo minuscula.
$this->load_record($usuario, 'preffix: c_');
 
  
//Ejemplo5:
+
==='''Ipv4'''===
$this->load_record('Usuario');
+
Filtra una cadena para que sea de tipo ipv4, debe cumplir con el patrón.
  
//Ejemplo6:
+
==='''Int'''===
$this->load_record('Usuario', 'field: nombre, apellido');
+
Filtra una cadena para que sea de tipo entero, retorna un integer método.
 
 
== 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]]=
 
#[[GENERADOR DE FORMULARIOS#|Tipos de Formularios]]
 
#[[GENERADOR DE FORMULARIOS#|Ventajas Generadores de Formularios]]
 
#[[GENERADOR DE FORMULARIOS#|Desventajas Generadores de Formularios]]
 
  
 
=[[EJEMPLOS]]=
 
=[[EJEMPLOS]]=
  
 
=[[GLOSARIO]]=
 
=[[GLOSARIO]]=

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)