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&oacute;n de tablas con JQuery</h1>
                <div id="divContenedorTabla">
                    
                    <table align="center" width="450">
<caption>T&iacute;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">&nbsp;</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.

Responder a