Hola!
Tengo un evento modificación (implícito) definido en un formulario, donde hago el chequeo de correctitud de algunos valores.
Si existe un error hago un throw new toba_error($mi_mensaje);, obligando a la detención del proceso con el mensaje de error correspondiente.
El problema es que necesitaría hacer algo tal que dependiendo de algún valor, se presente una ventana de confirmación, es decir se avise que existe una posible situación de error, pero que permita o no continuar la ejecución…
¿Como podría hacer algo así desde php?
eso desde PHP no lo podes hacer, porque no tenes interacción antes de que salte la excepcion. Eso unicamente lo podes hacer del lado cliente, por ende JS.
La pregunta es: ¿El valor a usar como parametro, lo tenes en el lado cliente o es necesario imperiosamente obtenerlo luego de que viajan los datos?
Lo que podes hacer es, en el evt__validar_datos (en el JS del formulario) agregar una confirmacion de la cual dependa el submit.
<?php
echo "{$this->objeto_js}.evt__validar_datos()
{
var confirma = true;
if (parametro_venenoso) {
confirma = confirm('Tas seguro que queres ejecutarme en Güindous Messenyer?');
}
return confirma;
}
";
?>
Asi a grandes rasgos seria como lo podrias chequear. Acordate que cuando se devuelve false durante el submit, el mismo se aborta.
Es un valor que tomo del cuadro de una pantalla, que en principio, se toma de una datos_tabla independiente.
En la segunda uso finalmente ese valor como subordinado a otro valor. En esta pantalla tengo varios formularios.
Si el valor que tomo del cuadro, está ya en uso en la tabla principal, entonces avisaría que ya está (pero puede tener 2 o más apariciones, no hay problema, aunque si es improbable…).
Lo más probable es que lo solucione con algún campo en el cuadro que indique que ya tiene algo vigente… es un parche, pero…
pero al entrar en la segunda pantalla no sabes ya si esta en uso o no?. Porque no mandas simplemente una bandera que asi lo indique en JS y listo, no hace falta que le agregues un campo al cuadro. Supongo que es esa pantalla la que necesitas que lo considere.
Si, podría haber hecho algo así… incluso en el conf de la otra pantalla (con alguna modificación, pero el caso particular es más dificil explicarlo que hacerlo).
Al final, quedó como un campo calculado adicional, que de paso, me sirve para otra cosa.
Mil gracias!