aland este es el codigo
controllador
public function add() {
$this->layout='ajax';
if ($this->request->is('post')) {
$this->Eleccionorgano->create();
if ($this->Eleccionorgano->saveAll($this->request->data)) {
$this->Session->setFlash(__('The eleccionorgano has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The eleccionorgano could not be saved. Please,
try again.'));
}
}
$subpuntos = $this->Eleccionorgano->Subpunto->find('list');
$this->set(compact('subpuntos', 'trabajadoresAsociados'));
}
vista add
>
<div class="form">
<?php echo $this->Form->create('Eleccionorgano'); ?>
<div id="divContenedor">
<h1>Manipulación de tablas con JQuery</h1>
<div id="divContenedorTabla">
<table align="center" width="450">
<caption>Título de la tabla</caption>
<thead>
<tr>
<th>numplan</th>
<th>#</th>
<th>Documento</th>
<th>Nombres</th>
<th>Apellidos</th>
<th>Calidad</th>
<th width="22"> </th>
</tr>
</thead>
<tbody>
<tr>
<td><?php echo
$this->Form->input('numplancha',array('class'=>'clsAnchoTotal','type'=>'numeric','label'=>''));?></td>
<td><?php echo
$this->Form->input('ordenamiento',array('class'=>'clsAnchoTotal','type'=>'numeric','label'=>''));?></td>
<td><?php echo
$this->Form->input('documento',array('class'=>'clsAnchoTotal','type'=>'numeric','label'=>''));?></td>
<td><?php echo
$this->Form->input('nombres',array('class'=>'clsAnchoTotal','type'=>'text','label'=>''));?></td>
<td><?php echo
$this->Form->input('apellidos',array('class'=>'clsAnchoTotal','type'=>'text','label'=>''));?></td>
<td><?php echo
$this->Form->input('calidad',array('class'=>'clsAnchoTotal','type'=>'text','label'=>''));?></td>
<td align="right"><input type="button" value="-"
class="clsEliminarFila"></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="4" align="right">
<input type="button" value="Agregar una fila" class="clsAgregarFila">
<input type="button" value="Clonar la tabla" class="clsClonarTabla">
<input type="button" value="Eliminar la tabla" class="clsEliminarTabla">
</td>
</tr>
</tfoot>
</table>
</div>
</div>
<?php echo $this->Form->end(__('Submit')); ?>
<fieldset>
<legend><?php echo __('Add Eleccionorgano'); ?></legend>
y este es un layout ajax para q me funcione el script de duplicar las
tablas y agragar las filas
<!DOCTYPE html>
<html>
<head>
<?php echo $this->Html->css('default'); ?>
<?php echo $this->Html->css('bootstrap');
// echo
$this->Html->script("http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");
?>
</head>
<body>
<center>
<?php echo $this->Session->flash(); ?>
<?php echo $this->fetch('content'); ?>
</center>
<?php
// echo $this->Html->script("manipulacion");
echo $this->Html->script("jquery-1.10");
echo $this->Html->script("bootstrap");
?>
</body>
</html>
<script>
$(document).ready(function(){
//
$(document).on('click','caption',function(){
//obtener la tabla que contiene el caption clickeado
var objTabla=$(this).parent();
//el cuerpo de la tabla esta visible?
//lo siguiente es unicamente para cambiar el icono del caption
if(objTabla.find('tbody').is(':visible')){
//eliminamos la clase clsContraer
$(this).removeClass('clsContraer');
//agregamos la clase clsExpandir
$(this).addClass('clsExpandir');
}else{
//eliminamos la clase clsExpadir
$(this).removeClass('clsExpandir');
//agregamos la clase clsContraer
$(this).addClass('clsContraer');
}
//mostramos u ocultamos el cuerpo de la tabla
objTabla.find('tbody').toggle();
});
//evento que se dispara al hacer clic en el boton para agregar una nueva
fila
$(document).on('click','.clsAgregarFila',function(){
//almacenamos en una variable todo el contenido de la nueva fila que
deseamos
//agregar. pueden incluirse id's, nombres y cualquier tag... sigue siendo
html
var strNueva_Fila='<tr>'+
'<td><input name="data[Eleccionorgano][numplancha]" type="text"
class="clsAnchoTotal"></td>'+
'<td><input name="data[Eleccionorgano][ordenamiento]" type="text"
class="clsAnchoTotal"></td>'+
'<td><input name="data[Eleccionorgano][documento]" type="text"
class="clsAnchoTotal"></td>'+
'<td><input name="data[Eleccionorgano][nombres]"
type="text" class="clsAnchoTotal"></td>'+
'<td><input name="data[Eleccionorgano][apellidos]"
type="text" class="clsAnchoTotal"></td>'+
'<td><input name="data[Eleccionorgano][calidad]"
type="text" class="clsAnchoTotal"></td>'+
'<td align="right"><input type="button" value="-"
class="clsEliminarFila"></td>'+
'</tr>';
/*obtenemos el padre del boton presionado (en este caso queremos la tabla,
por eso
utilizamos get(3)
table -> padre 3
tfoot -> padre 2
tr -> padre 1
td -> padre 0
nosotros queremos utilizar el padre 3 para agregarle en la etiqueta
tbody una nueva fila*/
var objTabla=$(this).parents().get(3);
//agregamos la nueva fila a la tabla
$(objTabla).find('tbody').append(strNueva_Fila);
//si el cuerpo la tabla esta oculto (al agregar una nueva fila) lo
mostramos
if(!$(objTabla).find('tbody').is(':visible')){
//le hacemos clic al titulo de la tabla, para mostrar el contenido
$(objTabla).find('caption').click();
}
});
//cuando se haga clic en cualquier clase .clsEliminarFila se dispara el
evento
$(document).on('click','.clsEliminarFila',function(){
/*obtener el cuerpo de la tabla; contamos cuantas filas (tr) tiene
si queda solamente una fila le preguntamos al usuario si desea eliminarla*/
var objCuerpo=$(this).parents().get(2);
if($(objCuerpo).find('tr').length==1){
if(!confirm('Esta es el única fila de la lista ¿Desea eliminarla?')){
return;
}
}
/*obtenemos el padre (tr) del td que contiene a nuestro boton de eliminar
que quede claro: estamos obteniendo dos padres
el asunto de los padres e hijos funciona exactamente como en la vida real
es una jergarquia. imagine un arbol genealogico y tendra todo claro ;)
tr --> padre del td que contiene el boton
td --> hijo de tr y padre del boton
boton --> hijo directo de td (y nieto de tr? si!)
*/
var objFila=$(this).parents().get(1);
/*eliminamos el tr que contiene los datos del contacto (se elimina todo el
contenido (en este caso los td, los text y logicamente, el boton */
$(objFila).remove();
});
//evento que se produce al hacer clic en el boton que elimina una tabla
completamente
$(document).on('click','.clsEliminarTabla',function(){
var objTabla=$(this).parents().get(3);
//bajamos la opacidad de la tabla hasta estar invisible
$(objTabla).animate({'opacity':0},500,function(){
//eliminar la tabla
$(this).remove();
});
});
//boton para clonar cualquiera de las tablas
$(document).on('click','.clsClonarTabla',function(){
var objTabla=$(this).parents().get(4);
//agregamos un clon de la tabla a la capa contenedora
$('#divContenedor').append($(objTabla).clone());
});
});
</script>
<?php echo $this->element('sql_dump'); ?>
Gracias, espero me puedas ayudar
--
El servicio de correo misena es soportado tecnológicamente por © Google y
ofrecido por el Servicio Nacional de Aprendizaje – SENA de manera gratuita
a todos los colombianos y en especial a los aprendices e instructores de
Programas de Formación Titulada y Complementaria. Los contenidos, textos,
imágenes, archivos y puntos de vista enviados en este mensaje son
responsabilidad exclusiva del remitente y no reflejan ni comprometen
oficialmente a la institución. No se autoriza el uso de esta herramienta
para el intercambio de correos masivos, cadenas o spam, ni de mensajes
ofensivos, de carácter político, sexual o religioso, con fines de lucro,
con propósitos delictivos o cualquier otro mensaje que se considere
indebido o que vaya en contra de la Ley.
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía
un correo electrónico a [email protected].
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Visita este grupo en http://groups.google.com/group/cakephp-es.
Para obtener más opciones, visita https://groups.google.com/d/optout.