Jump to content

Ayuda - Envío variables dentro de un módulo


Serex

Recommended Posts

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 by Serex (see edit history)
Link to comment
Share on other sites

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?

post-546724-0-76116700-1370623099_thumb.png

Link to comment
Share on other sites

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...) :rolleyes:

Link to comment
Share on other sites

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)

  • Like 1
Link to comment
Share on other sites

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

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! :rolleyes:

 

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

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

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

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...