Contribucion para la Comunidad (Paginador + form_tag Modifi)

edited noviembre 2008 in Principiantes
Bueno ante todo, un saludo a toda la comunida, despues de haber intentando por mucho tiempo... he logrado hacer funcionar el paginador.
No se si es la forma correcta de hacerlo pero me esta funcionano. El Otro aspecto que hice fue modificar el core para que los FORM_TAG tubieran un comportamiento similar a los FORM_REMOTE_TAG en cuanto a los campos requeridos ya que no me funcionaba este comportamiento.
Disculpe si tengo algo errado en el mismo si se puede mejorar perfecto siempre y cuando me hagan llegar los cambios o postean los mismo para toda la comunidad
Se Agrego al Archivo tags.php contenido en la carpeta library/kumbia/helpers/
apartir de la linea 521 esto en la function form_tag

// Agregado por CGUTO para el Control de las Validaciones de los Campos REQUERID
// ***************************************************************************************
if(isset($params)&&$params){
$requiredFields = encomillar_lista($params);
$params = "if(validaForm(this,new Array({$requiredFields}))){ return true; } else{ return false; }";
unset($params);
} else{
// Nada
}
// ***************************************************************************************


Para el uso del mismo en la vista se debe especificar los cambios requeridos para el mismo, ejemplo:
<?= form_tag("grupo/adicionar","required: codgru,desgru")?>
<tr>
<td align='right'>
<b>C&oacute;digo:</b>
</td>
<td>
<?= text_field_tag('codgru', 'size: 3','maxlength: 3', 'title: Codigo del Grupo') ?>
</td>
</tr>
<tr>
<td align='right' valign="top">
<b>Descripci&oacute;n: </b>
</td>
<td>
<?= text_field_tag('desgru', 'size: 50','maxlength: 50', 'title: Descripcion del Grupo') ?>
</td>
</tr>
<tr>
<td align='center'></td>
<td>
<br>
<?= submit_tag('Enviar','scr: aceptar.png','border: 0','title: Aceptar') ?>
<?= link_to('grupo/index', button_tag('Cancelar', 'border: 0','title: Cancelar')) ?>
</td>
</tr>
<?= end_form_tag() ?>


Para el uso de PAGINATE:

Se debe modificar el archivo BOOT.INI contenido en la carpeta CONFIG
se debe incluir al final de la linea kumbia.helpers.utils

Ejemplo

extensions = kumbia.logger, mail.mail, libchart.libchart, fpdf.fpdf, personal.utilidad, kumbia.auth, personal.helpers, kumbia.helpers.tags, kumbia.helpers.utils

NOTA: Si se desea trabajar con utilidades externas a estas es decir librerias en este mismo archivo se deben inlcluir teniendo en cuenta la ubicacion de las mismas debe estar contenida en library
Ejemplo:
Para incluir el archivo /library/personal/utilidad.php
debemos: colocar esto: personal.utilidad

Ahora bien sigamos con el ejemplo.

Para El Ejemplo usaremos la siguiente tabla:
--
-- Table structure for table `grupo`
--

CREATE TABLE IF NOT EXISTS `grupo` (
`id` int(10) NOT NULL auto_increment,
`codgru` varchar(3) NOT NULL,
`desgru` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `codgru` (`codgru`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Grupo' AUTO_INCREMENT=30 ;

--
-- Dumping data for table `grupo`
--

INSERT INTO `grupo` (`id`, `codgru`, `desgru`) VALUES
(17, '001', 'Grupo 001'),
(18, '002', 'Grupo 002'),
(19, '003', 'Grupo 003'),
(20, '004', 'Grupo 004'),
(21, '005', 'Grupo 005'),
(25, '006', 'Grupo 006'),
(27, '008', 'Grupo 008');



Nombre del Controlador: grupo_controller.php
Ruta: /app/default/controllers/

En el Controlador para la funcion INDEX tenemos
<?php
class GrupoController extends ApplicationController {

public static $force = true;
private $_per_page = 10;

public function index($page=1){

if (!is_numeric($page)){
$page=1;
}

$this->page = $this->Grupo->paginate("per_page: $this->_per_page","page: $page");

if ($page > $this->page->total){
$page=1;
$this->page = $this->Grupo->paginate("per_page: $this->_per_page","page: $page");
}
}

* Borrar Registros Seleccionados
*
* @return null
*/
public function borrarsel($sele) {

echo $_REQUEST;


echo "<pre>";
print_r ($sele);
echo "</pre>";
$this->seleccion = $sele;

echo "<pre>";
print_r ($this->seleccion);
echo "</pre>";



foreach ($sele as $id){
echo $id."<br>";
}


// for($i=1; $i<=100; $i++){
// $valor = 'sel_'.$i.'value';
// //echo ($valor) ;
// echo ($this->request('sel_18')) ;
// if($valor=true){
// //$this->Grupo->delete($i);
//
// // echo $this->request('sel_'.i);
// }
// }
//Flash::success('Proceso de borrado Exitoso');
}
}
?>

En nuestra Vista tenemos

Nombre de la Vista: index.phtml
Ruta: /app/default/views/grupo/


<div align="center"><h1>Listado de Grupos</h1></div>

<? if($Grupo->count()){ ?>

<table align="center" cellspacing='2' cellpadding='2' border='0' style='border: 1px solid #CFCFCF'>
<tr bgcolor="#92B1FF" >
<th>Id</th>
<th>C&oacute;digo</th>
<th>Descripci&oacute;n</th>
<th colspan="5">Acciones</th>

</tr>

<? foreach($page->items as $grup):?>

<? tr_color('#E8E8E8', '#C7C7C7') ?>
<td><?= $grup->id ?></td>
<td><?= link_to('grupo/consultar/'.$grup->id, $grup->codgru) ?></td>
<td><?= $grup->desgru ?></td>
<td align="center">
<b><?= checkbox_field_tag('$sele[]', 'title: Selecionar', 'value: '.$grup->id) ?>
</b>
</td>
<td align="center">
<b><?= link_to('grupo/modificar/'.$grup->id,img_tag('b_edit.png', 'border: 0', 'title: Modificar registro?')) ?>
</b>
</td>
<td align="center">
<b><?= link_to('grupo/borrar/'.$grup->id,
img_tag('b_drop.png', 'border: 0', 'title: Eliminar registro?'),
'confirm: Desea borrar el Registro?') ?>
</b>
</td>
<td align="center">
<b><?= link_to('grupo/imprep/'.' / /pdf/'.$grup->id,img_tag('print.gif', 'border: 0', 'title: Imprimir el registro?'),
'confirm: Desea Imprimir el Registro?') ?>
</b>
</td>
</tr>

<? endforeach;?>

</table>

<? } else { ?>
<div aling="center" align="center"> No hay Registros </div>
<?} ?>
<br>
<div align="center">

<?= ($page->prev) ? link_to("grupo/index/$page->prev",img_tag("back.gif", "border: 0")) : img_tag("back_disable.gif", "border: 0") ?>
<?= $page->current ?>/<?= $page->total?>
<?= ($page->next) ? link_to("grupo/index/$page->next",img_tag("next.gif", "border: 0")) : img_tag("next_disable.gif", "border: 0"); ?>
</div>
Sign In or Register to comment.