Autor Tema: toba memoria en JS  (Leído 48 veces)

0 Usuarios y 1 Visitante están viendo este tema.

jorozco

  • Hero Member
  • *****
  • Mensajes: 810
    • Ver Perfil
    • Email
  • Institución: Universidad Catòlica de Manizales
  • Nombre y apellido: Jhon Jairo Orozco D.
  • Sistema: Toba
toba memoria en JS
« : enero 07, 2020, 06:01:17 pm »
Richar, buenas tardes
Cual es la sintaxis en JS, para actualizar un variable y posteriormente recuperarla en PHP ?

en php es
toba::memoria()->set_dato_instancia('operacion',  'agregar');

en JS intentamos con
toba.memoria.set_dato_instancia('operacion',  'agregar');

Pero no funciona

Lo que busco es capturar en el cliente el evento agregar fila de un ML, para llenar un combo dependiendo de la operación seleccionar o nuevo

<?php
    class extension_cups extends toba_ei_formulario_ml    {
        function extender_objeto_js()
        {
            $id_js = toba::escaper()->escapeJs($this->objeto_js);
            echo  "{$id_js}.crear_fila_orig = {$id_js}.crear_fila;
              {$id_js}.crear_fila = function() {
                  //Invoca a la creacion original
                  //toba.memoria.set_parametro('operacion', 'agregar');
                  //alert ('nueva');
                  var nueva_fila = this.crear_fila_orig();                   
                  return nueva_fila;
              }
            ";
        }     
    }
?>

Me puedes indicar la línea?
Gracias y Cordial Saludo
« Última Modificación: enero 07, 2020, 06:50:29 pm por jorozco »

richard

  • Moderador Global
  • *****
  • Mensajes: 2679
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:toba memoria en JS
« Respuesta #1 : enero 08, 2020, 11:34:31 am »
Hola Jhon
Richar, buenas tardes
Cual es la sintaxis en JS, para actualizar un variable y posteriormente recuperarla en PHP ?

la unica manera de recuperar un valor del cliente en PHP, es si el mismo llega como parámetro ya sea en un pedido via GET o POST.
PHP no lee variables en JS y viceversa, estas en un ambiente desconectado.

Citar
en php es
toba::memoria()->set_dato_instancia('operacion',  'agregar');

en JS intentamos con
toba.memoria.set_dato_instancia('operacion',  'agregar');
Pero no funciona
Y no debe tampoco, primero porque no existe como tal y segundo porque toba::memoria()->set_dato_instancia() trabaja sobre la session de PHP, en el cliente la unica conexion que tienes con la session es via la cookie, la cual NO debe ser accesible via JS y definitivamente de la cual Toba no lee valores.

Entonces, si necesitan enviar un valor al servidor... se debe realizar via un pedido de pagina.

Citar
Lo que busco es capturar en el cliente el evento agregar fila de un ML, para llenar un combo dependiendo de la operación seleccionar o nuevo
Momento, a ver si entiendo correctamente.

La seleccion o agregado de registro nuevo es a nivel de operacion no?.
Si es asi, eso lo sabes en el servidor antes de enviar el ML al cliente y por lo tanto en el Ci puedes usar un metodo que cargue las opciones del combo segun el stage en que estes.

Si no es a nivel operacion, sino a nivel ML.
El combo de la fila modelo viene con valores pre-cargados desde el servidor, para re-cargarlo necesitas algo similar a una cascada ...o un pedido ajax explicito, en este ultimo caso puedes enviar como parámetro si se trata de un nuevo registro o no sin mucho problema, solo involucra que tengas una variable como bandera para señalizar dicho caso.

Recuerda que cuando se crea una fila se realiza el procesamiento de todos los efs, asi que ese podria ser un buen lugar para invocar el pedido ajax si es necesario.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.