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 cakephp-es+unsubscr...@googlegroups.com. Para publicar una entrada en este grupo, envía un correo electrónico a cakephp-es@googlegroups.com. Visita este grupo en http://groups.google.com/group/cakephp-es. Para obtener más opciones, visita https://groups.google.com/d/optout.