Confirmación javascript para la eliminación de un registro

631 views
Skip to first unread message

jordicakephp

unread,
Nov 22, 2008, 5:20:30 AM11/22/08
to CakePHP en Español
Buenos días comunidad,

Me gustaría saber cuál es la mejor idea, o la mejor práctica, para
lanzar un confirm javascript cuando el usuario está a punto de
eliminar un registro. Mi primera aproximación es poner este javascript
en la vista, aunque seguro que existe algún helper que hace esto,
¿cierto? Buscaba alguna idea para mejorar este código. Muchas gracias
de antemano y un saludo.

<h2><?php echo $html->link('Inicio', '/usuarios', array(), false,
false); ?> > Gestionar las categorías</h2>

<script language="Javascript">

function preguntar(){

if (confirm("¿Estás seguro de que quieres borrar el registro?"))
{

return true;

}

else return false;

}

</script>

<table>

<?php echo $html->tableHeaders(array('Nombre','Gestionar')); ?>

<?php

foreach ($categorias as $fila) {

echo $html->tableCells( array ( $fila['Categoria']['nombre'],

$html->link('Editar','/
categorias/editar/'.$fila['Categoria']['id']),

$html->link('Eliminar','/
categorias/eliminar/'.$fila['Categoria']['id'], array
('onclick'=>'return preguntar()'))

),

array ('bgcolor'=>'#ccffff')

);

}

?>

</table>

Fran Iglesias

unread,
Nov 22, 2008, 5:23:23 AM11/22/08
to cakep...@googlegroups.com
Si lees el api del html helper, el método link te lo hace solo.

El 22/11/2008, a las 11:20, jordicakephp escribió:

> Me gustaría saber cuál es la mejor idea, o la mejor práctica, para
> lanzar un confirm javascript cuando el usuario está a punto de
> eliminar un registro

--
Fran Iglesias
fra...@buabua.com


jordicakephp

unread,
Nov 22, 2008, 7:48:33 AM11/22/08
to CakePHP en Español
Gracias por la pista, Fran

Hasta ahora he puesto muy poco javascript y voy a leer el API...

Un saludo

Jordi
> fran...@buabua.com

jordicakephp

unread,
Nov 22, 2008, 8:27:46 AM11/22/08
to CakePHP en Español
Hola Fran,

He cambiado mi vista por esta:

<h2><?php echo $html->link('Inicio', '/usuarios', array(), false,
false); ?> > Gestionar las categorías</h2>

<table>

<?php echo $html->tableHeaders(array('Nombre','Gestionar')); ?>

<?php

foreach ($categorias as $fila) {

echo $html->tableCells( array ( $fila['Categoria']['nombre'],

$html->link('Editar','/
categorias/editar/'.$fila['Categoria']['id']),

$html->link('Eliminar','/
categorias/eliminar/'.$fila['Categoria']['id'], null, '¿Estas seguro
de que quieres borrar el registro?')

// $html->link('Eliminar','/
categorias/eliminar/'.$fila['Categoria']['id'], array
('onclick'=>'return preguntar()'))

),

array ('bgcolor'=>'#ccffff')

);

}

?>

</table>

¡Y no funciona! El HTML de los enlaces Eliminar es este:

<a href="/discografia/categorias/eliminar/4" onclick="">Eliminar</a>

¿Por qué no funciona? Supongo que no funciona porque no utiliza
ninguna función Javascript y debo instalar alguna librería javascript,
¿cierto? El HTML de mi vista, envuelta en su layout, empieza así:

<html>
<head>
<title> Discografía CakePHP :: Categorias </title>
</head>
<body>
...

Gracias de antemano y un saludo

Jordi
> > fran...@buabua.com- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Joaquin Windmüller

unread,
Nov 22, 2008, 9:00:04 AM11/22/08
to cakep...@googlegroups.com
El código php parece estar bién. No necesitas ninguna librería js.

Mira el código de la función HtmlHelper::link

2008/11/23 jordicakephp <jordic...@gmail.com>

Fran Iglesias

unread,
Nov 22, 2008, 10:33:23 AM11/22/08
to cakep...@googlegroups.com
Cambia el null del tercer parámetro por array(), si ves el código del
método verás que es el valor que le dan por defecto.


El 22/11/2008, a las 14:27, jordicakephp escribió:

> $html->link('Eliminar','/
> categorias/eliminar/'.$fila['Categoria']['id'], null, '¿Estas seguro
> de que quieres borrar el registro?')

--
Fran Iglesias
fra...@buabua.com


jordicakephp

unread,
Nov 23, 2008, 6:41:13 AM11/23/08
to CakePHP en Español
Muchas gracias,

He mirado el código del API y utilizo $html->link() como lo hacen en
varios tutoriales y blogs, y no hay manera, jeje. Sigue sin
funcionar.

Cuando veo el código HTML resultante que devuelve el servidor, el HTML
para los enlaces Eliminar es este:

<a href="/discografia/categorias/eliminar/4" onclick="">Eliminar</a>

No entiendo porque el onclick está vacío y no llama a ninguna función
JavaScript. En este HTML tampoco aparece ningún código JavaScript en
ningún sitio y por tanto es normal que no haga nada. Buscaré más, a
ver qué puede ser. Gracias y saludos.
> fran...@buabua.com

jordicakephp

unread,
Nov 23, 2008, 6:54:03 AM11/23/08
to CakePHP en Español
Tengo una pista, jeje ;-)

Menos mal que se me ha ocurrido quitar el interrogante de apertura "¿"
al mensaje confirmMessage. Ahora todo funcionaa correctamente.

Por ejemplo, si escribo este PHP:

$html->link('Eliminar','/categorias/eliminar/'.$fila['Categoria']
['id'], null, 'Are you sure')

El HTML para los enlaces "Eliminar" que devuelve ahora el servidor sí
lo entiendo porque tiene código JavaScript en el evento onclick:

<a href="/discografia/categorias/eliminar/8" onclick="return confirm
(&#039;Are you sure&#039;);">Eliminar</a>

¿Por qué pasa esto? Otro compañero del grupo planteaba una duda
parecida que yo también tengo pendiente y que a lo mejor está
relacionada con esto. Resulta que cuando en CakePHP 1.2 (en CakePHP
1.1 no me pasaba) pongo, por ejemplo, un texto con acentos, eñes o
interrogantes de apertura en el botón submit de un formulario, el
texto aparece vacío... También tengo pendientes los mensajes de
validación automáticos de Cake que creo que también pueden estar
relacionados con esto. Resumiendo, ¿por qué si pongo el interrogante
de apertura no funciona el confirm del método link? Muchas gracias de
antemano y un saludo. Jordi

On 22 nov, 15:00, "Joaquin Windmüller" <joaquin....@gmail.com> wrote:
> El código php parece estar bién. No necesitas ninguna librería js.
>
> Mira el código de la función
> HtmlHelper::link<http://api.cakephp.org/html_8php-source.html#l00279>
>
> 2008/11/23 jordicakephp <jordicake...@gmail.com>
> > > - Mostrar texto de la cita -- Ocultar texto de la cita -

David Valdez

unread,
Nov 23, 2008, 12:59:06 PM11/23/08
to cakep...@googlegroups.com
Tiene que ver con tu encode.

Revisa que todo lo que estas haciendo es UTF8.

Alguna vez le paso lo mismo a alguien en #cakephp-es  en freenode y estuvo un par de horas batallando y se soluciono cambiando su  código a uft8

Saludos

Nachopitt

unread,
Nov 23, 2008, 5:27:46 PM11/23/08
to cakep...@googlegroups.com
Regla general...
Revisar que tanto la codificación del archivo html, el charset definido en la cabecera, el charset definido en el php.ini para que PHP lo use, y que los juegos de caracteres y cotejamientos de la base de datos y las tablas estén en la misma sintonía, ya sea utf-8 (si planeas guardar informacion de diferentes lenguajes) o latin1(si solo son caracteres en español).

2008/11/23 David Valdez <da...@cakephp-es.org>



--
Ignacio Alberto Zamora Esqueda
Ingeniero de Software
Corporación Tectronic, S.A. De C.V.
Tels: (33) 3615-44-11 y 36-15-45-11
Fax: (33) 3615-46-11
sist...@tectronic.com.mx
www.tectronic.com.mx

alejandro_miguel

unread,
Dec 16, 2008, 1:02:56 PM12/16/08
to CakePHP en Español
saludos fran

necesito ayuda en lo de la carga de archivos con el helper upload

se presenta el caso de editar debo mostrar nuevamente lo ya cargado
para cargar nuevamente
pero si no quiero modificsr y los campos de mi formulario q suben las
imagenes quedan en blanco pues
no termina la accion y no guarda

por ejemplo si de 5 campos solo modifique 3 los demas en blanco (el
input file)
pues no graba nada es como si estuviera validando el campo

porfa me dices como solucionar eso

gracias
> fran...@buabua.com

Fran Iglesias

unread,
Dec 16, 2008, 6:23:32 PM12/16/08
to cakep...@googlegroups.com
Asegúrate de que no haya reglas de validación que estén actuando o que
tengas un beforeSave que esté devolviendo false. En principio el
upload debería ser "neutral" en ese aspecto.

Pero es difícil sin ver tu código.
--
Fran Iglesias
fra...@buabua.com




Reply all
Reply to author
Forward
0 new messages