Jump to content

como puedo obtener datos del front desde mi modulo ?


Recommended Posts

tengo un modulo que me genera un login  en el front office  este modulo se ancla en el hook de DisplayCustomerAccountForm

y todo bien pero cuando realizo el post de mi tpl  no logro obtener los datos que se mandan desde el formulario de mi modulo  intento capturarlo con 

 public function hookDisplayCustomerAccountForm(array $params)
    {
       if (Tools::isSubmit('formulario')) { 
       Configuration::updateValue('form', 'dato');
        }
    }

    public function hookValidateCustomerFormFields($params)
    {
        if (Tools::isSubmit('formulario')) {
	  Configuration::updateValue('validate', 'dato');
        }
    }

el templete lo retorno el el hookDisplayCustomerAccountForm

pero  en  ese hook o en el otro no logro obtener los datos de mi formulario  

agradezco cualquier ayuda o ejemplo 

Link to comment
Share on other sites

Si, lo he hecho. Pero creo que no comprendo qué quieres hacer.

El el caso del hookValidateCustomerFormFields, lo he hecho asi:

foreach ($params['fields'] as $field) {
    if ($field->getName() == 'nombre_del_campo') {
		$value = $field->getValue();
	}
}

Pero no comprendo por que utilizas Configuration::updateValue.. ¿Qué estás intentando hacer? Si explicas mejor tal vez te pueda ayudar.

Link to comment
Share on other sites

2 minutes ago, Rodrigo B Laurindo said:

Si, lo he hecho. Pero creo que no comprendo qué quieres hacer.

El el caso del hookValidateCustomerFormFields, lo he hecho asi:


foreach ($params['fields'] as $field) {
    if ($field->getName() == 'nombre_del_campo') {
		$value = $field->getValue();
	}
}

Pero no comprendo por que utilizas Configuration::updateValue.. ¿Qué estás intentando hacer? Si explicas mejor tal vez te pueda ayudar.

si @Rodrigo B Laurindoestoy haciendo mi propio formulario de pago con una plataforma propia de pagos. esta plantilla la tengo en un modulo propio desde ese modulo controlare los pagos  ese modulo me carga la plantilla  pero necesito obtener datos del usuario  para que  haga log. este formulario esta en hook de displayCustomerAccountForm  (el formulario propio de prestashop para pagos lo quite) y deje el mio pero no se como obtener estos datos. lo pude hacer en controlador pero necesito que sea desde mi modulo para desde el controlar las vistas.

Link to comment
Share on other sites

On 4/6/2019 at 3:18 PM, Rodrigo B Laurindo said:

Creo que aún no he comprendido de todo lo que quieres, mas pienso que lo que quieres está en otros hooks:


hookActionObjectCustomerAddAfter
hookActionObjectCustomerUpdateAfter

Y entonces, Tools::getValue('nombre_del_input')



 

@Rodrigo B Laurindo pues es simple lo que quiero hacer es obtener datos de un formulario en el front office pero  no encuentro la menera de hacerlo por medio de los métodos de prestashop. "no encuentro el método "   el formulario es un formulario que tengo en mi modulo y expongo en el hook 

 public function hookDisplayCustomerAccountForm($params)
    {

        return $this->display(__FILE__, 'views/templates/hook/payment.tpl');

    }

el formulario se genera y todo pero no se como obtener los datos de el al momento de hacer post 

Link to comment
Share on other sites

8 minutes ago, Rodrigo B Laurindo said:

Son esos los que utilizo para obtener los datos dese formulario. A mi me funciona. Tal vez hagas algo diferente.

Si quieres pega todo el código de tu función y de tu tpl y le echo un vistazo.

si gracias @Rodrigo B Laurindo este es mi template 

 <div class="row setup-content" id="step-1">
        <div class="col-xs-12">
            <div class="col-md-12 well text-center">
                <form action="" method="POST" id="form" name="form">

                    <div>
                        <input type="text" class="lo" name="iusser" placeholder="Email / número de celular" id="iusser">
                    </div>
                    <br>
                    <div>
                        <input type="password" class="lo" name="passs" placeholder="Contraseña" id="passs">
                    </div>
                    <br>
                    <input type="submit" name="subs" id="subs" value="sumit">
                </form>

                <br>
                <h3 class="text-muted no-select con2">¿Aún no estas registrado?</h3>
               
            </div>
        </div>
    </div>

 y lo mando llamar en mi modulo

<?php
if (!defined('_PS_VERSION_')) {
    exit;
}

class Pagos_id extends Module
{
    protected $config_form = false;

    public function __construct()
    {
        $this->name = 'pagos_id';
        $this->tab = 'checkout';
        $this->version = '1.0.0';
        $this->author = 'pagos';
        $this->need_instance = 0;
        $this->bootstrap = true;
        parent::__construct();
        $this->displayName = $this->l('pagos id');
        $this->description = $this->l('en este modulo podrás pagar por medio de pagos id');
        $this->confirmUninstall = $this->l('si desistalas este modulo no podrás recivir pagos ');
        $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
    }

    public function install()
    {
        Configuration::updateValue('PAGOS_ID_LIVE_MODE', false);

        return parent::install() &&
            $this->registerHook('header') &&
            $this->registerHook('backOfficeHeader') &&
            $this->registerHook('leftColumn') &&
            $this->registerHook('displayCustomerAccountForm') &&
            $this->registerHook('actionObjectCustomerAddAfter') &&
            $this->registerHook('actionObjectCustomerUpdateAfter') &&
            $this->registerHook('validateCustomerFormFields');

    }

    public function uninstall()
    {
        Configuration::deleteByName('PAGOS_ID_LIVE_MODE');
        return parent::uninstall();
    }



    public function hookBackOfficeHeader()
    {
        if (Tools::getValue('module_name') == $this->name) {
            $this->context->controller->addJS($this->_path . 'views/js/back.js');
            $this->context->controller->addCSS($this->_path . 'views/css/back.css');
        }
    }

    public function hookHeader()
    {
        $this->context->controller->addJS($this->_path . '/views/js/cambios.js');
        $this->context->controller->addJS($this->_path . '/views/js/datos.js');
        $this->context->controller->addJS($this->_path . '/views/js/nav.js');
        $this->context->controller->addCSS($this->_path . '/views/css/BotonesNav.css');
        $this->context->controller->addCSS($this->_path . '/views/css/card.css');
    }

    public function hookDisplayCustomerAccountForm($params)
    {


        $contexto = Context::getContext()->link->getModuleLink('sicar_id','action');
        Configuration::updateValue('contexto', $contexto);

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('AccountForm', $datos);
        }

        return $this->display(__FILE__, 'views/templates/hook/payment.tpl');

    }

    public function hookValidateCustomerFormFields($params)
    {

        Configuration::updateValue('FormFields', 'hookValidateCustomerFormFields');

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('FormFields', $datos);
        }
    }

    public function hookActionObjectCustomerUpdateAfter($params)
    {
        Configuration::updateValue('UpdateAfter', 'hookActionObjectCustomerUpdateAfter');

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('UpdateAfter', $datos);
        }

    }


    public function hookActionObjectCustomerAddAfter($params)
    {
        Configuration::updateValue('addafter', 'hookActionObjectCustomerAddAfter');

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('addafter', $datos);
        }

    }


}

si se utiliza la función guardo algún dato en la base de datos para ver si esta llegando el post o  algo así pero nunca entran esas funciones

también lo intento desde un controlador

 

<?php

class Pagos_idPagosModuleFrontController extends ModuleFrontController
{
    public function init()
    {
        return parent::init();
    }

    public function initContent()
    {
        parent::initContent();
        $this->context->smarty->assign(array());
        $this->setTemplate('../../views/templates/hook/payment.tpl');
    }


    public function hookDisplayCustomerAccountForm($params)
    {


        $contexto = Context::getContext()->link->getModuleLink('sicar_id','action');
        Configuration::updateValue('contexto', $contexto);

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('ttsdt', $datos);
        }

        return $this->display(__FILE__, 'views/templates/hook/payment.tpl');

    }

    public function hookValidateCustomerFormFields($params)
    {

        Configuration::updateValue('ttsdt', 'hookValidateCustomerFormFields');

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('ttsdt', $datos);
        }
    }

    public function hookActionObjectCustomerUpdateAfter($params)
    {
        Configuration::updateValue('ttsdt', 'hookActionObjectCustomerUpdateAfter');

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('ttsdt', $datos);
        }

    }


    public function hookActionObjectCustomerAddAfter($params)
    {
        Configuration::updateValue('ttsdt', 'hookActionObjectCustomerAddAfter');

        if (Tools::isSubmit('subs')) {
            $datos = Tools::getValue('iusser');
            Configuration::updateValue('ttsdt', $datos);
        }

    }



}

pero tampoco entran nunca se inserta nada en la base de datos 

Link to comment
Share on other sites

Ok, creo que ahora por fín veo qué quieres. ¿Quieres reemplazar completamente el formulario de login?

1 hour ago, fred1roca said:

 <form action="" method="POST" id="form" name="form">

Pero date cuenta de que ya no utilizas el controlador default para procesar los datos, entonces no te servirá ningún hook default, ¿verdad?

Deduzco que tienes un javascript que intercepta el click en el butón y envia a algún controlador? ¿Cómo lo haces?

 

 

Link to comment
Share on other sites

15 hours ago, Rodrigo B Laurindo said:

Ok, creo que ahora por fín veo qué quieres. ¿Quieres reemplazar completamente el formulario de login?

Pero date cuenta de que ya no utilizas el controlador default para procesar los datos, entonces no te servirá ningún hook default, ¿verdad?

Deduzco que tienes un javascript que intercepta el click en el butón y envia a algún controlador? ¿Cómo lo haces?

 

 

si lo remplace por completo.  puedo campurar el post desde el order controller pero  no puedo manejar mis vistas desde ese ya que están en mi modulo  y no no tengo ningun javascript entonces le hago llegar la petición por ajax ? 

Link to comment
Share on other sites

12 hours ago, Rodrigo B Laurindo said:

Tu post debe ir a algun controlador, es que en tu código no hay action. Si no hay action y no hay Ajax, para donde va?

okay muchas gracias  entiendo  lo que me dices pero tienes algún ejemplo de ello ? 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...