Stiven Gallardo Posted August 18, 2020 Share Posted August 18, 2020 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 More sharing options...
Prestafan33 Posted August 18, 2020 Share Posted August 18, 2020 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. Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted August 18, 2020 Author Share Posted August 18, 2020 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 More sharing options...
ventura Posted August 18, 2020 Share Posted August 18, 2020 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 More sharing options...
Stiven Gallardo Posted August 18, 2020 Author Share Posted August 18, 2020 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 More sharing options...
Stiven Gallardo Posted August 29, 2020 Author Share Posted August 29, 2020 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 More sharing options...
ventura Posted August 29, 2020 Share Posted August 29, 2020 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 More sharing options...
gusman126 Posted August 29, 2020 Share Posted August 29, 2020 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 More sharing options...
Stiven Gallardo Posted August 29, 2020 Author Share Posted August 29, 2020 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 More sharing options...
Stiven Gallardo Posted August 29, 2020 Author Share Posted August 29, 2020 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 More sharing options...
Prestafan33 Posted August 29, 2020 Share Posted August 29, 2020 Prueba con $valor=Tools::getValue('nombre-de-tu-ckeckbox') Esto dentro del hookActionValidateOrder(), por supuesto. Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted August 30, 2020 Author Share Posted August 30, 2020 (edited) 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 August 30, 2020 by Stiven Gallardo (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted August 30, 2020 Share Posted August 30, 2020 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 More sharing options...
Stiven Gallardo Posted September 1, 2020 Author Share Posted September 1, 2020 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 More sharing options...
ventura Posted September 1, 2020 Share Posted September 1, 2020 Te adjunto un modulo editado que hice hace tiempo con otro tipo de funcionalidad, pero que valdrá como ejemplo. datacheckbox.zip Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted September 1, 2020 Author Share Posted September 1, 2020 2 hours ago, ventura said: Te adjunto un modulo editado que hice hace tiempo con otro tipo de funcionalidad, pero que valdrá como ejemplo. datacheckbox.zip 23.15 kB · 1 download Muchas gracias ya lo inspecciono. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now