Actualizar un campo editable de una grilla

229 views
Skip to first unread message

Fefomdp

unread,
Nov 28, 2012, 8:44:18 PM11/28/12
to cakep...@googlegroups.com
Hola a todos, estoy haciendo una pagina web sobre un club de fútbol y estoy intentando actualizar un campo de una grilla de datos. Tengo la tabla de posiciones y tengo los puntos en un input editable para cada uno de los equipos. La idea es que de la grilla actualice los puntos y presione el boton guardar y me guarde los puntos de cada uno de los equipos. Alguien tiene un ejemplo que pueda tomar como base? Porque no se como encararlo, si tengo que usar el saveall u otra cosa?

Desde ya muchas gracias!!!

slds

Federico

$pyd3r

unread,
Nov 29, 2012, 2:14:35 PM11/29/12
to cakep...@googlegroups.com
Te recomiendo hacerlo con Javascript y ajax. 

Pero antes de hacer algo avanzado deberías buscar una solución más sencilla podrías por una ventana flotante cargar el form que necesitas para actualizar los datos de la grilla y al guardar recargar la pagina para que se vean los cambios. 

Fefomdp

unread,
Dec 1, 2012, 5:14:15 AM12/1/12
to cakep...@googlegroups.com
Muchas Gracias, si habia pensado en hacer en otra ventana, pero necesito que la carga de esa información sea rápida, es por eso que pensé que en la misma grilla el usuario la actualice

Fefomdp

unread,
Dec 1, 2012, 5:16:58 AM12/1/12
to cakep...@googlegroups.com
Ahí encontré una forma, no se si es la mejor pero funciona, quizás a alguien le sirva:

VISTA

echo $form->create('Standing', array('action'=>'update'));
foreach ($standings as $standing):
$class = null;
if ($i++ % 2 == 0) {
$class = ' class="altrow"';
}
?>
<tr<?php echo $class;?>>
<td><?php echo $standing['Standing']['id']; ?>&nbsp;</td>
<td>
<?php echo $this->Html->link($standing['Team']['name'], array('controller' => 'teams', 'action' => 'view', $standing['Team']['id'])); ?>
</td>
<td><?php echo $form->input('Standing'.$standing['Standing']['id'].'points',array('label'=>'','class'=>'short','value'=>$standing['Standing']['points'])); ?>&nbsp;</td>
<td class="actions">
<?php echo $this->Html->link(__('View', true), array('action' => 'view', $standing['Standing']['id'])); ?>
<?php echo $this->Html->link(__('Edit', true), array('action' => 'edit', $standing['Standing']['id'])); ?>
<?php echo $this->Html->link(__('Delete', true), array('action' => 'delete', $standing['Standing']['id']), null, sprintf(__('Are you sure you want to delete # %s?', true), $standing['Standing']['id'])); ?>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php echo $form->end('Add');?>

CONTROLADOR}

function admin_update() {
$this->layout = "admin";
if (!empty($this->data)) {
Debugger::dump($this->data['Standing']);
//obtengo todos los registros de la tabla de posiciones
$standings = $this->Standing->find('all',array('order' => array('Standing.points'=> 'desc'),'conditions' => array('Tournament.status'=>'A')));
foreach ($standings as $standing){
$id = $standing['Standing']['id'];
$this->Standing->read(null, $id);
    $this->Standing->saveField('points',$this->data['Standing']['Standing'.$id.'points']);
}
$this->Session->setFlash(__('The standing has been saved', true));
$this->redirect(array('action' => 'index'));
}

}

romel javier gomez herrera

unread,
Dec 1, 2012, 10:21:40 AM12/1/12
to CakePHP en Español
hola. 


saludos.


--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/cakephp-esp/-/11taRm2NKZkJ.

Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.

Draiver Rojas

unread,
Dec 3, 2012, 8:46:03 PM12/3/12
to cakep...@googlegroups.com
Buen dia... gracias por compartir tu codigo, creo que me puede servir. solo tengo una duda podrias colocar el codigo del controlador que genera la vista. Es decir el que le pasa el array $stadings a la vista. Gracias...

Fefomdp

unread,
Dec 4, 2012, 8:32:24 PM12/4/12
to cakep...@googlegroups.com
Te paso el código

function admin_index() {
$this->layout = "admin";
$this->set('standings', $this->Standing->find('all',array('order' => array('Standing.points'=> 'desc'),'conditions' => array('Tournament.status'=>'A'))));
}

Básicamente lo que hace es buscar las posiciones ordenadas por puntos del torneo activo.
Reply all
Reply to author
Forward
0 new messages