Jump to content

Recommended Posts

Buena noche alguien podría ayudarme con algo, busco agregar un checkbox en la sección de Checkout, alguien me podría decir con que controlador puedo verificar si el ckeckbox fue seleccionado para así dentro de ella ejecutar otra función he estado buscando y no encuentro mucho, estaría muy agredecido si me ayudan con ese tema

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

Depende un poco de lo que necesites y de donde quieras que aparezca ese checkbox.

Mediante un módulo anclado en el hook displayAfterCarrier, puedes anclarlo en el checkout despues de la lista de transportistas, eg

spacer.png

Mediante un módulo puedes crear e integrar cualquier proceso de este tipo sin tener que sobrescribir ningún archivo del core

Link to comment
Share on other sites

4 hours ago, ventura said:

Depende un poco de lo que necesites y de donde quieras que aparezca ese checkbox.

Mediante un módulo anclado en el hook displayAfterCarrier, puedes anclarlo en el checkout despues de la lista de transportistas, eg

 

Mediante un módulo puedes crear e integrar cualquier proceso de este tipo sin tener que sobrescribir ningún archivo del core

Busco que el checkbox aparezca cuando esta eligiendo el método de pago ya en la ultima sección.

Link to comment
Share on other sites

3 hours ago, ventura said:

Entonces  para esa posición displayPaymentTop

O desde :


classes/checkout/CheckoutPaymentStep.php
themes/classic/templates/checkout/_partials/steps/payment.tpl

 

 

 

¿Con ese archivo CheckoutPaymentStep.php podria validar si el checkbox  fue seleccionado?.

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

3 hours ago, ventura said:

Entonces  para esa posición displayPaymentTop

O desde :


classes/checkout/CheckoutPaymentStep.php
themes/classic/templates/checkout/_partials/steps/payment.tpl

 

 

 

He estado buscando mucho como validar y solo logro validar si lo agrego en el formulario de dirección, pero lo busco para colocarlo al final cuando se aceptan termino, agregar el campo ya lo tengo.

Link to comment
Share on other sites

8 hours ago, Stiven Gallardo said:

¿Con ese archivo CheckoutPaymentStep.php podria validar si el checkbox  fue seleccionado?.

Si, desde ahi se puede validar. Luego depende de la lógica o la funcionalidad que vaya a tener ese checkbox. Por sentido practico y escalabilidad, lo mejor hacerlo mediante un módulo

Link to comment
Share on other sites

Depende de la función o interacción que vaya a tener el checkbox, si se va a guardar algún dato en bd, en un registro nuevo, o si va a actualizar alguno existente.

En cualquier caso lo mejor es que lo ejecutes desde ajax, sobrescribiendo lo menos posible.

Link to comment
Share on other sites

23 minutes ago, ventura said:

Depende de la función o interacción que vaya a tener el checkbox, si se va a guardar algún dato en bd, en un registro nuevo, o si va a actualizar alguno existente.

En cualquier caso lo mejor es que lo ejecutes desde ajax, sobrescribiendo lo menos posible.

Exacto lo que busco es que cuando seleccione el checkbox se ejecute una función que va ha guardar datos en db, pero como vengo mencionando desde el inicio no encuentro en que PHP validar si ese checkbox fue seleccionado

Link to comment
Share on other sites

Lo mejor como se ha comentado es que lo hagas mediante un modulo

-En modules/nuevomodulo.php 

Allí estará la mayor parte de la información, incluida la creación de la tabla nueva que almacenara y ejecutará los datos. Hay ejemplos para hacerlo en módulos incluidos por defecto en Prestashop

En los Hooks se posicionara la información

displayPaymentTop  -- Posición en checkout.,Ahi estará el .tpl con el html del input nuevo, eg
/modules/nuevomodulo/views/templates/hook/nuevomodulo.tpl .       <input type="checkbox" class="form-control" name="data_check_box" value="" class="" />
actionValidateOrder -- Validación del pedido. A partir de ahi se aplicará la lógica a implementar y se guardara la información
Acceso a toda la información del pedido desde $objOrder = $params['order'];

actionFrontControllerSetMedia o header -- Allí estará el css y js

 

-Si la información se va a almacenar en una tabla nueva, la practica adecuada sera crear una Class nueva, eg
/modules/nuevomodulo/classes/NuevoModulo.php

-La información del input la pasamos por ajax y así se evita el tener que sobrescribir archivos del core, eg

modules/nuevomodulo/controllers/front/ajax.php

Puedes hacerlo con cookie, utilizando la función  ajax. eg

protected function ajaxProcessSavePickerCheck()
 {
     $detailCheck = Tools::getValue('detailCheck');
     $this->context->cookie->data_check_box = $detailCheck;
     die(Tools::jsonEncode(array('detailCheck' => $this->context->cookie->data_check_box)));
    }

Validando el checked del checkbox por js

modules/nuevomodulo/views/js/nuevomodulo.js .eg:

var dataPickerCheck = {
init : function() {
$(document).on('change', 'input[name=data_check_box]', function(e) {
var checkparams = $(this).prop('checked') ? 1 :0;
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: datepicker_controller,
async: true,
cache: false,
dataType: 'json',
data: 'action=savePickerCheck'
+ '&detailCheck=' + checkparams,

 

Link to comment
Share on other sites

1 hour ago, ventura said:

Manténnos informados de los progresos.

Saludos

Ya cree el modulo como indicas registrandolo al hook displayPaymentTop, estoy revisando el código que me enviaste para realizar validación del envió del formulario en el mismo modulo que estoy creando, pero hay lago que no entiendo muy bien  ajaxProcessSavePickerCheck esta funcion iria en el PHP cierto?. lo de ajax si lo entiendo un poco

Link to comment
Share on other sites

  • 2 weeks later...
On 8/16/2020 at 1:00 PM, ventura said:

Lo mejor como se ha comentado es que lo hagas mediante un modulo

-En modules/nuevomodulo.php 

Allí estará la mayor parte de la información, incluida la creación de la tabla nueva que almacenara y ejecutará los datos. Hay ejemplos para hacerlo en módulos incluidos por defecto en Prestashop

En los Hooks se posicionara la información

displayPaymentTop  -- Posición en checkout.,Ahi estará el .tpl con el html del input nuevo, eg
/modules/nuevomodulo/views/templates/hook/nuevomodulo.tpl .       <input type="checkbox" class="form-control" name="data_check_box" value="" class="" />
actionValidateOrder -- Validación del pedido. A partir de ahi se aplicará la lógica a implementar y se guardara la información
Acceso a toda la información del pedido desde $objOrder = $params['order'];

actionFrontControllerSetMedia o header -- Allí estará el css y js

 

-Si la información se va a almacenar en una tabla nueva, la practica adecuada sera crear una Class nueva, eg
/modules/nuevomodulo/classes/NuevoModulo.php

-La información del input la pasamos por ajax y así se evita el tener que sobrescribir archivos del core, eg

modules/nuevomodulo/controllers/front/ajax.php

Puedes hacerlo con cookie, utilizando la función  ajax. eg


protected function ajaxProcessSavePickerCheck()
 {
     $detailCheck = Tools::getValue('detailCheck');
     $this->context->cookie->data_check_box = $detailCheck;
     die(Tools::jsonEncode(array('detailCheck' => $this->context->cookie->data_check_box)));
    }

Validando el checked del checkbox por js

modules/nuevomodulo/views/js/nuevomodulo.js .eg:


var dataPickerCheck = {
init : function() {
$(document).on('change', 'input[name=data_check_box]', function(e) {
var checkparams = $(this).prop('checked') ? 1 :0;
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: datepicker_controller,
async: true,
cache: false,
dataType: 'json',
data: 'action=savePickerCheck'
+ '&detailCheck=' + checkparams,

 

¿Podrias ayudarme a hacer surgir esto?. El ajax no me esta funcionando me manda este error 

GET https://lecoqprueba.com.co/ajax.php?detailCheck=ada&_=1598675108532 404

y le intento por post y pasa lo mismo

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