Serex Posted June 7, 2013 Share Posted June 7, 2013 (edited) Hola! Llevo ya un tiempo intentando hacer un pequeño módulo que, dándole 3 valores, realice unas operaciones con ellos y retorne un texto que incluye el resultado de esas operaciones. La cuestión es que con PHP es fácil hacerlo, y actualmente lo tengo así y metido en un módulo mediante un IFRAME, pero lo suyo sería que quedara bien integrado con la tienda y todo se realizara dentro del módulo (lo más que he logrado es que después de pulsar el botón 'ejecutar' me abra un php, pero lo abre en la ventana de la tienda, y no dentro del módulo sólo). La idea sería tener un formulario con tres campos numéricos y un botón de 'calcular'. Al dar el botón se realizan las operaciones y se muestra el resultado debajo del botón 'calcular'. Si no es muy difícil ¿alguien podría facilitarme un ejemplo con un par de campos y que sume los dos? (luego ya lo complicaría yo...) Creo que haría falta el TPL para mostar el formulario y el resultado y el PHP para realizar las operaciones (no se si todo dentro del TPL sería factible...). He estado buscando, pero no encuentra nada que realmente me sirva y ahora mismo lo peor de todo es que tengo un follón en la cabeza con una mezcla de todo lo visto... xD PD: Edito el título del hilo para ser más "concreto" Edited June 7, 2013 by Serex (see edit history) Link to comment Share on other sites More sharing options...
Serex Posted June 7, 2013 Author Share Posted June 7, 2013 A ver si alguien puede orientarme para ver dónde cometo el error... La idea simplificada es que se introduzca un valor en el único campo de un formulario de un módulo y al presionar el botón del mismo retorne el valor introducido. Nada más... (de momento) Para ello, tengo el siguiente código en el TPL: <form action="" method="post"> <label>Variable1: </label><input class="text" type="number" name="variable1" id="variable1" /><br /> <input class="exclusive" type="submit" value="Ejecutar" /> </form> {debug} {if isset($a1)} {l s='valores introducidos ok - '}{$a1}{l s=' - '}{$a2} {else} {l s='introduzca valores - '}{$a1}{l s=' - '}{$a2} {/if} Este es el código del PHP del módulo: public function hookLeftColumn( $params ){ global $smarty; $_POST['variable1']; $smarty->assign('a1', $variable1); $smarty->assign('a2', 'Var Texto OK'); return $this ->display( __FILE__, 'ModuleTesting.tpl' ); El problema es que la variable "a2" introducida directamente sí la devuelve, pero no la variable "a1" que se supone que es la que viene del formulario...El resultado, después de haber introducido por ejemplo 75 en el campo y darle al botón, debería ser "valores introducidos ok - 75 - Var Texto OK" en lugar de lo que devuelve: "introduzca valores - - Var Texto OK" (como se ve en la imagen adjunta) ¿Alguna idea? Link to comment Share on other sites More sharing options...
joseantgv Posted June 7, 2013 Share Posted June 7, 2013 Y porqué no lo haces con javascript, dentro del propio tpl? Link to comment Share on other sites More sharing options...
Serex Posted June 7, 2013 Author Share Posted June 7, 2013 Y porqué no lo haces con javascript, dentro del propio tpl? Joseantgv, no sabría hacerlo... Para estas cosas suelo pillar algún ejemplo y lo voy modificando... ¿Sabrías/podrías ponerme un ejemplo? (con algo sencillo en plan "a+b" es más que suficiente, que ya te digo que luego lo adapto yo...) Link to comment Share on other sites More sharing options...
joseantgv Posted June 8, 2013 Share Posted June 8, 2013 http://portalesweb.bligoo.es/suma-de-dos-numeros-con-java-script Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted June 8, 2013 Share Posted June 8, 2013 http://portalesweb.b...con-java-script jeje, sale el primero en google, si buscas https://www.google.es/search?q=suma+de+dos+numeros+con+javascript Pero vamos, yo creo que busca mas hacerlo todo por php integrado en prestashop con smarty, nada de javascript.. Link to comment Share on other sites More sharing options...
nadie Posted June 8, 2013 Share Posted June 8, 2013 Te dejo un ejemplo muy basico. El modulo se llama: bloquenumeros Los ficheros del modulo son: bloquenumeros.php Contenido: <?php if (!defined('_PS_VERSION_')) exit; class BloqueNumeros extends Module { public function __construct() { $this->name = 'bloquenumeros'; $this->tab = 'advertising_marketing'; $this->version = '0.1'; $this->author = 'Vicente del Bosque (Entrenador Spain)'; parent::__construct(); $this->displayName = $this->l('Bloque Numeros'); $this->description = $this->l('Bloque para sumar dos numeros'); } public function install() { return (parent::install() && $this->registerHook('leftColumn')); } public function uninstall() { return (parent::uninstall()); } public function hookLeftColumn($params) { $numer1 = Tools::getValue('numero1'); $numer2 = Tools::getValue('numero2'); $suma = $numer1 + $numer2; $this->smarty->assign(array( 'numer1' => $numer1, 'numer2' => $numer2, 'suma' => $suma, )); return $this->display(__FILE__, 'bloquenumeros.tpl'); } } Y el contenido del fichero: bloquenumeros.tpl es este: <div class="block"> <form action="#" method="post"> {l s='Numero 1' mod='bloquenumeros'} <input type="text" name="numero1" /> <br/> {l s='Numero 2' mod='bloquenumeros'} <input type="text" name="numero2" /> <br/> <input type="submit" value="{l s='Sumar ' mod='bloquenumeros'}" name="sumar_numeros_res" /> </form> {if !empty($suma) } {l s='El resultado de suma: ' mod='bloquenumeros'} {$numer1} + {$numer2} {l s='es: ' mod='bloquenumeros'} {$suma} {/if} </div> (Atención, esto es solo una pequeña chapuza en modo demostracion) 1 Link to comment Share on other sites More sharing options...
nadie Posted June 8, 2013 Share Posted June 8, 2013 (El ejemplo que te he dejado es muy básico, no me hago responsable de cualquier desastre ocasionado) Link to comment Share on other sites More sharing options...
Serex Posted June 9, 2013 Author Share Posted June 9, 2013 Gracias a todos por las contestaciones! Mañana me pondré con ello, a ver qué saco... Joseantgv, Rubalcaba, sí, ya vi el ejemplo en gogle (después de escribir el hilo). Miraré a ver si lo puedo adaptar a Prestashop. Lo que más me "inquietaba" era las características de PS (a la hora de llamar a una variable, recoger el valor de un campo del formulario,...). Vamos, esas "particularidades" de cada uno... en unos se pone un "." en otros "->" en otros... Lo intentaré, tanto en PHP como en Javascript (grandes frases: "dos mejor que uno" y "el saber no ocupa lugar") jejeje Víctor, gracias por el ejemplo. Mañana le doy un vistazo, junto al de JS. No veas como se lo curra "Vicente del Bosque", no? No sabía yo de estas aficiones suyas entre partido y partido... jeje Gracias de nuevo! Ya os iré poniendo novedades... ;-) Link to comment Share on other sites More sharing options...
joseantgv Posted June 9, 2013 Share Posted June 9, 2013 Gracias a todos por las contestaciones! Mañana me pondré con ello, a ver qué saco... Joseantgv, Rubalcaba, sí, ya vi el ejemplo en gogle (después de escribir el hilo). Miraré a ver si lo puedo adaptar a Prestashop. Lo que más me "inquietaba" era las características de PS (a la hora de llamar a una variable, recoger el valor de un campo del formulario,...). Vamos, esas "particularidades" de cada uno... en unos se pone un "." en otros "->" en otros... Lo intentaré, tanto en PHP como en Javascript (grandes frases: "dos mejor que uno" y "el saber no ocupa lugar") jejeje Víctor, gracias por el ejemplo. Mañana le doy un vistazo, junto al de JS. No veas como se lo curra "Vicente del Bosque", no? No sabía yo de estas aficiones suyas entre partido y partido... jeje Gracias de nuevo! Ya os iré poniendo novedades... ;-) Rubalcaba debe tener más tiempo libro que yo para poder currarse ese ejemplo! No son características de Prestashop sino de PHP. En el caso que comentas, es la diferencia de trabajar con un array o con un objeto. Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted June 9, 2013 Share Posted June 9, 2013 (edited) Rubalcaba debe tener más tiempo libro que yo para poder currarse ese ejemplo! Fue "Nadie" el que realizo el ejemplo de arriba, no fui yo. Edited June 9, 2013 by Rubalcaba (see edit history) Link to comment Share on other sites More sharing options...
Paula Martinez Posted June 9, 2013 Share Posted June 9, 2013 Te dejo un ejemplo muy basico. El modulo se llama: bloquenumeros Los ficheros del modulo son: bloquenumeros.php Contenido: <?php if (!defined('_PS_VERSION_')) exit; class BloqueNumeros extends Module { public function __construct() { $this->name = 'bloquenumeros'; $this->tab = 'advertising_marketing'; $this->version = '0.1'; $this->author = 'Vicente del Bosque (Entrenador Spain)'; parent::__construct(); $this->displayName = $this->l('Bloque Numeros'); $this->description = $this->l('Bloque para sumar dos numeros'); } public function install() { return (parent::install() && $this->registerHook('leftColumn')); } public function uninstall() { return (parent::uninstall()); } public function hookLeftColumn($params) { $numer1 = Tools::getValue('numero1'); $numer2 = Tools::getValue('numero2'); $suma = $numer1 + $numer2; $this->smarty->assign(array( 'numer1' => $numer1, 'numer2' => $numer2, 'suma' => $suma, )); return $this->display(__FILE__, 'bloquenumeros.tpl'); } } Y el contenido del fichero: bloquenumeros.tpl es este: <div class="block"> <form action="#" method="post"> {l s='Numero 1' mod='bloquenumeros'} <input type="text" name="numero1" /> <br/> {l s='Numero 2' mod='bloquenumeros'} <input type="text" name="numero2" /> <br/> <input type="submit" value="{l s='Sumar ' mod='bloquenumeros'}" name="sumar_numeros_res" /> </form> {if !empty($suma) } {l s='El resultado de suma: ' mod='bloquenumeros'} {$numer1} + {$numer2} {l s='es: ' mod='bloquenumeros'} {$suma} {/if} </div> (Atención, esto es solo una pequeña chapuza en modo demostracion) Gracias Nadie por el ejemplo. Link to comment Share on other sites More sharing options...
Serex Posted June 10, 2013 Author Share Posted June 10, 2013 Por lo pronto he probado la solución propuesta por Víctor y funciona perfecta tal y como él la pone (ahora tocará adaptarla). No modifico todavía el título del hilo, porque querría probar también la solución en JS... MIL gracias!!!! Link to comment Share on other sites More sharing options...
nadie Posted June 10, 2013 Share Posted June 10, 2013 Por lo pronto he probado la solución propuesta por Víctor y funciona perfecta tal y como él la pone (ahora tocará adaptarla). No modifico todavía el título del hilo, porque querría probar también la solución en JS... MIL gracias!!!! Lo que te deje un es un ejemplo básico y un poco "basto", me alegro de que te sirviera. Ya me contaras como te van tus experimentos. Link to comment Share on other sites More sharing options...
Recommended Posts