Buenas, lo que estoy intentando hacer es que una operacion A vaya a una operacion B, procese algo y lo guarde en memoria, y que vuelva a la operacion A (con el estado antes de ir a la operacion B) y que continue el procesamiento de los datos guardados en memoria.
Me estuve basando en https://foro.comunidad.siu.edu.ar/index.php?topic=2243.msg7618
Para ir de operacion A → B seteo unos datos en memoria y despues redirijo a la operacion b usando document.location.href y el vinculador
Entre los datos seteo la operacion a la que tiene que “retornar”
OPERACION A
toba::memoria()->set_dato("datos", $datos);
echo toba_js::abrir();
echo "document.location.href='".
toba::vinculador()->get_url(toba_proyecto::get_id(), $operacion_B, array(), array('menu', false))."'\n";
echo toba_js::cerrar();
Como no quiero que se pierda el estado de la operacion A, en la operacion B desactivo el reciclado dentro del ini
OPERACION B
function ini()
{
parent::ini();
toba::memoria()->desactivar_reciclado();
}
Y cuando quiero volver a la operacion A entiendo que el get_url del vinculador tiene que tener seteado menu => false
Tengo un evento para cerrar la operacion que te devuelve a la operacion A
OPERACION B
function evt__cerrar()
{
$datos = toba::memoria()->get_dato('datos');
$operacion_retorno = $datos['operacion_retorno'];
echo toba_js::abrir();
echo "document.location.href='".
toba::vinculador()->get_url(toba_proyecto::get_id(), $operacion_retorno, array(), array('menu', false))."'\n";
echo toba_js::cerrar();
}
Pero no importa que haga siempre en el log aparece
Se detecto cambio de operación. Se limpia la memoria de la operacion
Y cuando carga nuevamente la operacion A esta desde la pantalla del inicio y todo lo que estaba seteado en formularios, cuadros, etc se reinicia.
Como si se hubiera abierto desde el menu