Diferencia entre revisiones de «Helper Datagrid»

De KumbiaPHP Framework Wiki
Línea 1: Línea 1:
== DATAGRID FACIL DE CREAR.==
+
== DATAGRID FACIL DE USAR.==
  
*'''setFieldsAndHeaders($valor)'''
+
Invocando el helper datagrid y pasando el model se crea utomaticamente una grilla con los campos
 +
de este. La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás
 +
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el
 +
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo
 +
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.
  
$valor = 'id: código';
+
 
donde id es el campo de la tabla y código es un string a mostrar.
+
 
 +
===setValue($campo_id, $campo)===
 +
 
 +
Asigna un campo a mostrar de la tabla _id
 +
$campo_id: campo_id del modelo.
 +
$campo: nombre del campo que se encuentra en la tabla relacionada
 +
 
 +
<source lang="php">
 +
$dataGrid = new($Clientes);
 +
$dataGrid->setValue('paises_id', 'nombre');
 +
</source>
 +
 
 +
 
 +
<source lang=php>
 +
$dataGrid = new($Usuarios);
 +
$dataGrid->setValue('roles_id', 'rol');
 +
$dataGrid->setValue('paises_id', 'nombre');
 +
$dataGrid->setValue('ciudades_id', 'ciudad');
 +
</source>
 +
 
 +
 
 +
===setCaption($campo, $title)===
 +
 
 +
Cambia el nombre de una columna
 +
$campo: campo del modelo
 +
$title: nombre a mostrar en la columna.
 +
 
 +
<source lang="php">
 +
$dataGrid = new($Clientes);
 +
$dataGrid->setCaption('id', 'COD');
 +
$dataGrid->setCaption('paises_id', 'PAIS');
 +
</source>
 +
 
 +
 
 +
===setTextUpper($campo)===
 +
 
 +
Transforma toda la cadena de texto en letras Mayúsculas.
 +
$campo: campo del modelo
 +
 
 +
<source lang="php">
 +
$dataGrid = new($Clientes);
 +
$dataGrid->setTextUpper('nombres');
 +
</source>
 +
 
 +
 
 +
===setTextLower($campo)===
 +
 
 +
Transforma toda la cadena de texto en letras minúsculas.
 +
$campo: campo del modelo
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->setFieldsAndHeaders('id: COD.', 'nombre: NOMBRE');
+
$dataGrid = new($Clientes);
 +
$dataGrid->setTextLower('nombres');
 
</source>
 
</source>
  
  
En este ejemplo hay un campo perfiles_id, pero indicando  perfiles_nombre se visualiza el campo nombre de la tabla perfiles.
+
===setTextUpperFirst($campo)===
 +
 
 +
Transforma en mayúscula la primera letra de la cadena de texto.
 +
$campo: campo del modelo
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->setFieldsAndHeaders('id: COD.', 'perfiles_nombre: PERFIL');
+
$dataGrid = new($Clientes);
 +
$dataGrid->setTextUpperFirst('nombres');
 
</source>
 
</source>
  
 +
===setTextUpperWords($campo)===
  
*'''setColumnsAling($valor)'''
+
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.
$valor = 'id: center';
+
$campo: campo del modelo
donde id es el campo de la tabla y center es la propiedad
 
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->setColumnsAling('id: center', 'nombre: left');
+
$dataGrid = new($Clientes);
</source>
+
$dataGrid->setTextUpperWords('nombres');
 +
</source>
  
*'''caption'''
+
 
$tile: es un string que se muestra como titulo en la grilla.
+
===setTypeDate($campo)===
 +
 
 +
Formato de salida d/m/Y (01/01/2002) para base de datos mysql
 +
$campo: campo del modelo
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->caption = $title;
+
$dataGrid = new($Clientes);
 +
$dataGrid->setTypeDate('fecha');
 
</source>
 
</source>
  
*'''data_source'''
+
===setTypeImage($campo)===
Es una propiedad muy importante ya que se obtienen los datos a mostrar.
+
 
los datos son respuesta de un find, o un paginate.
+
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas.
 +
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.
 +
$campo: campo del modelo
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->data_source = $this->Usuarios->find();
+
$dataGrid = new($Clientes);
 +
$dataGrid->setTypeImage('photo');
 +
</source>
  
$dataGrid->data_source = $this->Usuarios->find("nombre like '%al%'");
+
===setTypeMoney($campo)===
  
$dataGrid->data_source = Load::model('usurios')->paginate('per_page: 20', "page: $page", "order: $order $asc_desc");
+
Formato de salida de un campo numerico
 +
El archivo config/datagrid.ini tiene información para el signo y separadores.
 +
$campo: campo del modelo
 +
 
 +
<source lang="php">
 +
$dataGrid = new($Clientes);
 +
$dataGrid->setTypeMoney('monto');
 
</source>
 
</source>
  
<u>En caso que la grilla tenga un paginador</u>
+
===setTypeNumeric($campo)===
  
*'''url'''
+
Formato de salida de un campo numerico
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.
+
El archivo config/datagrid.ini tiene información para los separadores.
 +
$campo: campo del modelo
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->url = 'usurios/index';
+
$dataGrid = new($Clientes);
 +
$dataGrid->setTypeNumeric('cantidad');
 
</source>
 
</source>
  
*'''show'''
+
 
número de paginas que se mostraran en el paginador, por defecto 10.
+
 
 +
===setTypePercent($campo)===
 +
 
 +
Formato de salida de un campo numerico
 +
El archivo config/datagrid.ini tiene información adicional.
 +
$campo: campo del modelo
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->show = 10;
+
$dataGrid = new($Clientes);
 +
$dataGrid->setTypePercent('porcentaje');
 
</source>
 
</source>
  
*'''paginator_name'''
+
===setMimes($params=array())===
 +
Visualiza un icono con un link a una accion al final de la fila para cada registro.
 +
 
 +
array $params: array de parametros
 +
 
 +
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.
 +
ej: http://dominio.com/kumbia/clientes/verExcel/11
  
Es el nombre del paginador para la grilla por defecto usa el default
 
puede incluir paginadores del kumbia.
 
  Classic -  Digg -  Extended -  Punbb -  Simple
 
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->paginator_name = 'classic';
+
$dataGrid = new($Clientes);
 +
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');
 
</source>
 
</source>
  
*'''edit, delete'''
+
 
Si existe un formulario por parte del programador estas funciones
+
===ignore($campo)===
redireccionan a un controller personalizado, debe indicar el controller_name y action_name por defecto envia el id, a la accion
+
No muestra un campo del molelo en la grilla
 +
$campo: campo del modelo
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->edit = 'usuarios/edit';
+
$dataGrid = new($Clientes);
 +
$dataGrid->ignore('id');
 
</source>
 
</source>
  
o
+
===edit = $url ===
 +
Visualiza un icono con un link a una accion al final de la fila para cada registro.
 +
 
 +
$url: nombre del controlador más la accion, es devuelta con su id
 +
 
 +
ej: http://dominio.com/kumbia/clientes/edit/11
 +
 
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->delete = 'clientes/delete';
+
$dataGrid = new($Clientes);
 +
$dataGrid->edit = controller_name . '/edit';
 
</source>
 
</source>
  
*'''delete_confirm'''
+
 
En caso que estubiera activo el delete se puede agregar un mensaje de confirmacion para eliminar.
+
===delete = $url ===
por defecto viene desactivado, se pueden pasar el campo a confirmar dentro de { }.
+
Visualiza un icono con un link a una accion al final de la fila para cada registro.
 +
 
 +
$url: nombre del controlador más la accion, es devuelta con su id
 +
 
 +
ej: http://dominio.com/kumbia/clientes/delete/11
 +
 
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->delete_confirm = '¿Desea elmimar este registro?';
+
$dataGrid = new($Clientes);
 +
$dataGrid->delete = controller_name . '/delete';
 
</source>
 
</source>
 +
 +
 +
===delete_confirm = $msg===
 +
Mensaje de alerta para la accion delete.
 +
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$campo}.
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->delete_confirm = '¿Desea elmimar el registro {id}?';
+
$dataGrid = new($Clientes);
 +
$dataGrid->delete = controller_name . '/delete';
 +
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';
 
</source>
 
</source>
 +
  
 
<source lang="php">
 
<source lang="php">
 +
$dataGrid = new($Clientes);
 +
$dataGrid->delete = controller_name . '/delete';
 
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';
 
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';
 
</source>
 
</source>
  
*'''setMimes($valores)'''
 
  
$valores = 'xls: verXls';
+
===paginator_name = $paginador===
 +
 
 +
$paginador: Nombre del paginador para la grilla por defecto usa el default
 +
puede incluir paginadores del kumbia.
 +
  Classic -  Digg -  Extended -  Punbb -  Simple
 +
 
 +
<source lang="php">
 +
$dataGrid = new($Clientes->paginate('per_page: 20'));
 +
$dataGrid->paginator_name = 'classic';
 +
</source>
 +
 
  
primer parametro es el nombre de la imagen que se encuentra en public/img/dataGrid/*.gif la extencion es gif.
+
===url = $url===
y el segundo parametro es la action que se será invocada en el mismo controlador que se encuentra el dataGrid.
+
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.
generea un icono al lado del registro, es util cuando el programador desea general una planilla excel o un
 
pdf por: 'usuario, cliente, etc...'.
 
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->setMimes('xls: descargarXls', 'pdf: verPdf', 'txt: archivoPlano');
+
$dataGrid = new($Clientes->paginate('per_page: 20'));
 +
$dataGrid->url = 'usurios/index';
 
</source>
 
</source>
  
*'''order_fields'''
+
===show = 10===
Por defecto esta en false. sirve para realizar orden by a los campos pinchando en la cabezera de la grilla.
+
número de paginas que se mostraran en el paginador, por defecto 10.
se puede utilizar con o sin paginado
 
  
 
<source lang="php">
 
<source lang="php">
$dataGrid->order_fields = true;
+
$dataGrid = new($Clientes->paginate('per_page: 20'));
 +
$dataGrid->show = 10;
 
</source>
 
</source>
  
 +
===style = $name===
 +
$name: nombre de la hoja de estilo ubicado en public/css/
  
para finalizar y llamar al partial debe ser de esta manera
+
<source lang="php">
 +
$dataGrid = new($Clientes->paginate('per_page: 20'));
 +
$dataGrid->style = 'default';
 +
</source>
  
===USO BASICO===
+
===Ejemplo 1 de Uso===
  
 
'''controller_clientes.php'''
 
'''controller_clientes.php'''
Línea 140: Línea 262:
 
     View::content();
 
     View::content();
 
     View::helpers('dataGrid');
 
     View::helpers('dataGrid');
     $dataGrid = new dataGrid();
+
     $dataGrid = new dataGrid($clientes);
    $dataGrid->setFieldsAndHeaders('rut: RUT', 'dv: DV', 'nombre: NOMBRE/RAZON SOCIAL', 'giro: GIRO',
 
    'direccion: DIRECCION', 'ciudades_nombre: CIUDAD');
 
    $dataGrid->data_source = $clientes;
 
 
     View::partial('dataGrid/default',false,array('dataGrid'=>$dataGrid));
 
     View::partial('dataGrid/default',false,array('dataGrid'=>$dataGrid));
 
 
</source>
 
</source>
  
  
===DATAGRID CON PAGINATOR===
+
===Ejemplo 2 de Uso===
  
 
'''controller_clientes.php'''
 
'''controller_clientes.php'''
 
<source lang="php">
 
<source lang="php">
     public function index($page=1, $field='nombre', $order='asc')
+
     public function index($page=1)
 
     {
 
     {
     $this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page", "order: $field $order");
+
     $this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");
 
     }
 
     }
 
</source>
 
</source>
  
 
'''views/clientes/index.phtml'''
 
'''views/clientes/index.phtml'''
 +
 
<source lang="php">
 
<source lang="php">
<?php
+
<?php View::content() ?>
    View::content();
+
<?php View::helpers('dataGrid'); ?>
    View::helpers('dataGrid');
+
<?php
     $dataGrid = new dataGrid();
+
     $dataGrid = new dataGrid($clientes);
     $dataGrid->setFieldsAndHeaders('rut: RUT', 'dv: DV', 'nombre: NOMBRE/RAZON SOCIAL', 'giro: GIRO',
+
     $dataGrid->setValue('ciudades_id', 'nombre');
     'direccion: DIRECCION', 'ciudades_nombre: CIUDAD');
+
    $dataGrid->setTextLower('nombre');
     $dataGrid->edit = $controller_name . '/edit';
+
    $dataGrid->setTypeImage('photo');
     $dataGrid->delete = $controller_name . '/delete';
+
    $dataGrid->setMimes('xls: verXls');
     $dataGrid->delete_confirm = '¿Desea eliminar este registro {rut}-{dv}, {nombre}?';
+
    $dataGrid->ignore('id');
$dataGrid->order_fields = true;
+
     $dataGrid->setCaption('ciudades_id', 'CIUDAD');
    $dataGrid->data_source = $clientes;
+
     $dataGrid->delete = $controller_name . '/delete';
    View::partial('dataGrid/default',false,array('dataGrid'=>$dataGrid));
+
     $dataGrid->edit = $controller_name . '/edit';
 +
     $dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';
 
?>
 
?>
 +
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?>
 
</source>
 
</source>
 
 
[[Archivo:dataGrid.jpg]]
 
  
  

Revisión del 17:26 13 sep 2009

DATAGRID FACIL DE USAR.

Invocando el helper datagrid y pasando el model se crea utomaticamente una grilla con los campos de este. La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.


setValue($campo_id, $campo)

Asigna un campo a mostrar de la tabla _id $campo_id: campo_id del modelo. $campo: nombre del campo que se encuentra en la tabla relacionada

$dataGrid	=	new($Clientes);
$dataGrid->setValue('paises_id', 'nombre');


$dataGrid	=	new($Usuarios);
$dataGrid->setValue('roles_id', 'rol');
$dataGrid->setValue('paises_id', 'nombre');
$dataGrid->setValue('ciudades_id', 'ciudad');


setCaption($campo, $title)

Cambia el nombre de una columna $campo: campo del modelo $title: nombre a mostrar en la columna.

$dataGrid	=	new($Clientes);
$dataGrid->setCaption('id', 'COD');
$dataGrid->setCaption('paises_id', 'PAIS');


setTextUpper($campo)

Transforma toda la cadena de texto en letras Mayúsculas. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTextUpper('nombres');


setTextLower($campo)

Transforma toda la cadena de texto en letras minúsculas. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTextLower('nombres');


setTextUpperFirst($campo)

Transforma en mayúscula la primera letra de la cadena de texto. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTextUpperFirst('nombres');

setTextUpperWords($campo)

Transforma en mayúscula la primera letra de cada palabra de la cadena de texto. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTextUpperWords('nombres');


setTypeDate($campo)

Formato de salida d/m/Y (01/01/2002) para base de datos mysql $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTypeDate('fecha');

setTypeImage($campo)

Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTypeImage('photo');

setTypeMoney($campo)

Formato de salida de un campo numerico El archivo config/datagrid.ini tiene información para el signo y separadores. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTypeMoney('monto');

setTypeNumeric($campo)

Formato de salida de un campo numerico El archivo config/datagrid.ini tiene información para los separadores. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTypeNumeric('cantidad');


setTypePercent($campo)

Formato de salida de un campo numerico El archivo config/datagrid.ini tiene información adicional. $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->setTypePercent('porcentaje');

setMimes($params=array())

Visualiza un icono con un link a una accion al final de la fila para cada registro.

array $params: array de parametros

el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id. ej: http://dominio.com/kumbia/clientes/verExcel/11


$dataGrid	=	new($Clientes);
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');


ignore($campo)

No muestra un campo del molelo en la grilla $campo: campo del modelo

$dataGrid	=	new($Clientes);
$dataGrid->ignore('id');

edit = $url

Visualiza un icono con un link a una accion al final de la fila para cada registro.

$url: nombre del controlador más la accion, es devuelta con su id

ej: http://dominio.com/kumbia/clientes/edit/11


$dataGrid	=	new($Clientes);
$dataGrid->edit	=	controller_name . '/edit';


delete = $url

Visualiza un icono con un link a una accion al final de la fila para cada registro.

$url: nombre del controlador más la accion, es devuelta con su id

ej: http://dominio.com/kumbia/clientes/delete/11


$dataGrid		=	new($Clientes);
$dataGrid->delete	=	controller_name . '/delete';


delete_confirm = $msg

Mensaje de alerta para la accion delete. $msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$campo}.

$dataGrid			=	new($Clientes);
$dataGrid->delete		=	controller_name . '/delete';
$dataGrid->delete_confirm	=	'Desea elimina el registro {id}';


$dataGrid			=	new($Clientes);
$dataGrid->delete		=	controller_name . '/delete';
$dataGrid->delete_confirm	=	'¿Desea elmimar este registro {nombre}, {apellido}?';


paginator_name = $paginador

$paginador: Nombre del paginador para la grilla por defecto usa el default puede incluir paginadores del kumbia.

  Classic -   Digg -   Extended -   Punbb -   Simple
$dataGrid			=	new($Clientes->paginate('per_page: 20'));
$dataGrid->paginator_name	=	'classic';


url = $url

Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.

$dataGrid		=	new($Clientes->paginate('per_page: 20'));
$dataGrid->url		=	'usurios/index';

show = 10

número de paginas que se mostraran en el paginador, por defecto 10.

$dataGrid		=	new($Clientes->paginate('per_page: 20'));
$dataGrid->show		=	10;

style = $name

$name: nombre de la hoja de estilo ubicado en public/css/

$dataGrid		=	new($Clientes->paginate('per_page: 20'));
$dataGrid->style	=	'default';

Ejemplo 1 de Uso

controller_clientes.php

public function index()
{
	$this->clientes 	=	$this->Clientes->find("order: nombre");;
}

views/clientes/index.phtml

    	View::content();
    	View::helpers('dataGrid');
    	$dataGrid			=	new dataGrid($clientes);
    	View::partial('dataGrid/default',false,array('dataGrid'=>$dataGrid));


Ejemplo 2 de Uso

controller_clientes.php

    public function index($page=1)
    {
    	$this->clientes	= $this->Clientes->paginate('per_page: 20', "page: $page");
    }

views/clientes/index.phtml

<?php View::content() ?>
<?php View::helpers('dataGrid'); ?>
<?php 
    	$dataGrid					=	new dataGrid($clientes);
    	$dataGrid->setValue('ciudades_id', 'nombre');
    	$dataGrid->setTextLower('nombre');
    	$dataGrid->setTypeImage('photo');
    	$dataGrid->setMimes('xls: verXls');
    	$dataGrid->ignore('id');
    	$dataGrid->setCaption('ciudades_id', 'CIUDAD');
    	$dataGrid->delete	=	$controller_name . '/delete';
    	$dataGrid->edit		=	$controller_name . '/edit';
    	$dataGrid->delete_confirm	=	'Eliminar el registro {rut}-{dv}';
?>
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?>


Descargar