Jump to content

Validar formulario en un modulo


Stiven Gallardo

Recommended Posts

Buena noche gente, alguien me podría ayudar con algo, resulta que estoy creando un modulo en el cual estoy mostrando un formulario hasta eso todo esta muy bien, pero me gustaría saber como puedo detectar el envió de datos del formulario en algún archivo php del modulo que estoy desarrollando,  estaria muy agradecido si me regalan algo de ayuda

Link to comment
Share on other sites

8 hours ago, Prestafan33 said:

Pues debes usar un controlador. No sé cómo estás generando el formulario, si usas ya un controlador para ello o lo insertas en algún hook ya existente, así que tampoco te puedo orientar mucho más.

Lo estoy generando de la siguiente manera, registre el modulo en el hook displayPaymentTop, entonces en el tpl del modulo cree un formulario, eso quiero crear una controlador para hacer eso, pero no se que a que hook deba registrarlo para validar envio del formulario

Link to comment
Share on other sites

Vas por el buen camino. La clave ya será ver la lógica que va por debajo.  Si vas a validar el checked del checkbox y en relación a ello se crea un registro en bd, por ejemplo asociado al id del pedido o algo parecido. Si es así,  puedes hacerlo sin problemas utilizando el hook actionValidateOrder

Link to comment
Share on other sites

20 minutes ago, ventura said:

Vas por el buen camino. La clave ya será ver la lógica que va por debajo.  Si vas a validar el checked del checkbox y en relación a ello se crea un registro en bd, por ejemplo asociado al id del pedido o algo parecido. Si es así,  puedes hacerlo sin problemas utilizando el hook actionValidateOrder

Ir asociado al id del pedido no ira, la intención es modificar una la tabla customer la consulta ya la tengo y funciona muy bien, vale amigo muchas gracias, investigare bien como hacer para manejar de manera correcta esos hook de action ya que nunca lo he hecho

Link to comment
Share on other sites

  • 2 weeks later...
On 8/18/2020 at 10:37 AM, ventura said:

Vas por el buen camino. La clave ya será ver la lógica que va por debajo.  Si vas a validar el checked del checkbox y en relación a ello se crea un registro en bd, por ejemplo asociado al id del pedido o algo parecido. Si es así,  puedes hacerlo sin problemas utilizando el hook actionValidateOrder

Disculpa he estado buscando una manera de hacer uso de hook pero no encuentro una manera correcta no entiendo muy bien la documentación podrias ayudarme con un ejemplo?,

Link to comment
Share on other sites

5 hours ago, Stiven Gallardo said:

Disculpa he estado buscando una manera de hacer uso de hook pero no encuentro una manera correcta no entiendo muy bien la documentación podrias ayudarme con un ejemplo?,

Es un hook de acción que se ejecuta cuando se realiza un pedido y se registra como valido. Lo cual se aprovecha para poder realizar cualquier acción desde el, envío de correo electrónico, registro o actualización de registros en bd, etc.

Desde el hook se tiene acceso a los parámetros:

array(
  'cart' => (object) Cart,
  'order' => (object) Order,
  'customer' => (object) Customer,
  'currency' => (object) Currency,
  'orderStatus' => (object) OrderState
);

ejemplo de uso, para guardar datos en una tabla nueva 

    public function hookActionValidateOrder($params)
    {
        
        $id_cart = $params['cart']->id;
        $id_order = $params['order']->id;
        $customer = $params['customer'];

        $data = [
        'dato1' => pSQL($id_order),
        'dato2' => pSQL($id_cart),
        'dato3' => pSQL($customer->firstname.' '.$customer->lastname),
         ];
      
        Db::getInstance()->insert('tabla-nueva', $data);

    }

Para actualizar una tabla existente se pueden utilizar las funciones de object que incluye prestashop,( update, save) . eg

    public function hookActionValidateOrder($params)
    {
        
        $customer = new Customer($params['customer']->id);
        $customer->conversion_rate = 2;
        $customer->update();

    }

 

Link to comment
Share on other sites

Ayudaria un poco si explicas un poco que quieres que haga y donde.

Es un formulario en su propia pagina? estas usando un front controller para mostrar ese formulario?

Por lo que entiendo, estas usando un formulario en el carrito de compra? donde? cuando se va a realizar el pago? cuando quieres que se registre esa información? al rellenarla al enviar el pedido? al aceptar la forma de pago?

Te estan dando soluciones, pero si no especificas un poco puede que no sean las soluciones

 

Link to comment
Share on other sites

7 hours ago, gusman126 said:

Ayudaria un poco si explicas un poco que quieres que haga y donde.

Es un formulario en su propia pagina? estas usando un front controller para mostrar ese formulario?

Por lo que entiendo, estas usando un formulario en el carrito de compra? donde? cuando se va a realizar el pago? cuando quieres que se registre esa información? al rellenarla al enviar el pedido? al aceptar la forma de pago?

Te estan dando soluciones, pero si no especificas un poco puede que no sean las soluciones

 

Estoy creando un modulo que muestra un checkbox en la en la sección de compra, cuando selecciona metodo de pago, lo que busco es validar que el ckeckbox del modulo fue seleccionado y en base a eso ejecutar un update en la base de datos de customer

Link to comment
Share on other sites

13 hours ago, ventura said:

Es un hook de acción que se ejecuta cuando se realiza un pedido y se registra como valido. Lo cual se aprovecha para poder realizar cualquier acción desde el, envío de correo electrónico, registro o actualización de registros en bd, etc.

Desde el hook se tiene acceso a los parámetros:


array(
  'cart' => (object) Cart,
  'order' => (object) Order,
  'customer' => (object) Customer,
  'currency' => (object) Currency,
  'orderStatus' => (object) OrderState
);

ejemplo de uso, para guardar datos en una tabla nueva 


    public function hookActionValidateOrder($params)
    {
        
        $id_cart = $params['cart']->id;
        $id_order = $params['order']->id;
        $customer = $params['customer'];

        $data = [
        'dato1' => pSQL($id_order),
        'dato2' => pSQL($id_cart),
        'dato3' => pSQL($customer->firstname.' '.$customer->lastname),
         ];
      
        Db::getInstance()->insert('tabla-nueva', $data);

    }

Para actualizar una tabla existente se pueden utilizar las funciones de object que incluye prestashop,( update, save) . eg


    public function hookActionValidateOrder($params)
    {
        
        $customer = new Customer($params['customer']->id);
        $customer->conversion_rate = 2;
        $customer->update();

    }

 

Amigo disculpa mira que estas mostrando los accesos que tengo mediante el hook que valores puedo obtener, el tiene un array mediante el modulo podria agregarlo un nuevo parametro para obtener el valor del checkbox?

Link to comment
Share on other sites

4 hours ago, Prestafan33 said:

Prueba con

$valor=Tools::getValue('nombre-de-tu-ckeckbox')

Esto dentro del hookActionValidateOrder(), por supuesto.

Lo tengo de esta manera

    public function hookActionValidateOrder($params)
    {
        $valor=Tools::getValue('active_points');
        $id=(int)$this->context->customer->id;
        Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . 'customer` SET `active_points` =  '.$valor.' where id_customer = '.(int)($id).' '); 

    }

pero no me ha funcionado la variable $valor se queda en 0

Edited by Stiven Gallardo (see edit history)
Link to comment
Share on other sites

Para hacer lo que quieres tienes que pasar el valor del checkbox (Display Hook) al Action Hook mediante una cookie. Puedes hacerlo con ajax

En la medida de lo posible utiliza las funciones propias de Prestashop (save() ó update()) para actualizar registros en Objetos, ejemplo en post de más arriba. 

 

Link to comment
Share on other sites

On 8/30/2020 at 12:34 AM, ventura said:

Para hacer lo que quieres tienes que pasar el valor del checkbox (Display Hook) al Action Hook mediante una cookie. Puedes hacerlo con ajax

En la medida de lo posible utiliza las funciones propias de Prestashop (save() ó update()) para actualizar registros en Objetos, ejemplo en post de más arriba. 

 

Mira estoy tratando de hacer el ajax de esta manera

$("#active_points").change(function(){    
    var proyecto = "prueba";
    alert("Presiono1");
    $.ajax({
        type: "GET",
        url: "ajax.php",        
        data : {"detailCheck": proyecto},
        success:function(){
            alert("Presiono2");
        },
       error: function(response) {

        console.log(response);
        },
    });
});

Pero no me funciona lo coloque en el mismo js para validar si la ruta estaba, pero a un asi no me funciona, el evento change se esta ejecutando bien no encuentro hacer funcionar el AJAX siempre lo manejo de esa manera.

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...