Stiven Gallardo Posted August 14, 2020 Share Posted August 14, 2020 (edited) 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 August 15, 2020 by Stiven Gallardo (see edit history) Link to comment Share on other sites More sharing options...
Prestafan33 Posted August 15, 2020 Share Posted August 15, 2020 Yo empezaría mirando en /controllers/front/OrderController.php. Link to comment Share on other sites More sharing options...
ventura Posted August 15, 2020 Share Posted August 15, 2020 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 Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted August 15, 2020 Author Share Posted August 15, 2020 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 More sharing options...
ventura Posted August 15, 2020 Share Posted August 15, 2020 Entonces para esa posición displayPaymentTop O desde : classes/checkout/CheckoutPaymentStep.php themes/classic/templates/checkout/_partials/steps/payment.tpl Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted August 15, 2020 Author Share Posted August 15, 2020 (edited) 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 August 15, 2020 by Stiven Gallardo (see edit history) Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted August 15, 2020 Author Share Posted August 15, 2020 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 More sharing options...
ventura Posted August 16, 2020 Share Posted August 16, 2020 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 More sharing options...
ventura Posted August 16, 2020 Share Posted August 16, 2020 En displayPaymentTop, moviéndolo con un poco de js. eg: Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted August 16, 2020 Author Share Posted August 16, 2020 3 hours ago, ventura said: En displayPaymentTop, moviéndolo con un poco de js. eg: Amigo yo agregue el chekcbox desde Payment, pero no se si esa forma es la mas adecuada con CheckoutPaymentStep.php estoy tratando de buscar como validad y no logro, podrias ayudarme por favor?. Link to comment Share on other sites More sharing options...
ventura Posted August 16, 2020 Share Posted August 16, 2020 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 More sharing options...
Stiven Gallardo Posted August 16, 2020 Author Share Posted August 16, 2020 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 More sharing options...
ventura Posted August 16, 2020 Share Posted August 16, 2020 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 More sharing options...
ventura Posted August 18, 2020 Share Posted August 18, 2020 On 8/16/2020 at 8:17 PM, Stiven Gallardo said: Muchas gracias, intentare con esa idea, haber que tal si me resulta. Manténnos informados de los progresos. Saludos Link to comment Share on other sites More sharing options...
Stiven Gallardo Posted August 18, 2020 Author Share Posted August 18, 2020 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 More sharing options...
Stiven Gallardo Posted August 29, 2020 Author Share Posted August 29, 2020 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 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