Jump to content

Appel de displayAjax dans override [résolu]


Recommended Posts

Bonjour la communauté

J'ai travaille sur le prestashop 1.7 d'un client. Quand il a fait la dernière mise à jour (vers 1.7.8.7), une fonctionnalité personnalisée n'a pas suivie, et je suis chargée de réparer ça.

Ce n'est pas développé dans un module, mais c'est codé dans le thème + override

Là où j'en suis, c'est que j'ai l'impression que la fonction qui modifie la base de donnée n'est pas appelée :

class CartController extends CartControllerCore
{
    public function displayAjaxAddDonation()
    {
        $donation_amount = Tools::getValue('donation_amount');
        $cart = $this->context->cart->id;
        if (Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart_donation WHERE id_cart ='.$cart)) {
            Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'cart_donation(id_cart, donation) VALUES('.$cart.', '.$donation_amount.')');
        }
        die('ok');
    }
}

C'est dans le fichier override/controllers/front/CartController.php

Comment être sûre que la fonction est appelée ? Et pourquoi elle n'insère pas les données dans la base ?

Si vous avez des pistes, je vous remercie !

 

Edited by Sarah Yuna (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Je me réponds à moi-même puisque j'ai trouvé la solution (ou plutôt la source du problème)

Il y avait bien un problème dans l'appel d'ajax. Ce bout de javascript est inséré dans un fichier du thème :

$.ajax({
                type:"POST",
                url: "{$urls.pages.cart}",
                data: {
                     ajax: 1,
                     action: 'addDonation',
                     donation_amount: montant
                },
                success: function(data, textStatus, jqXHR) {
                        if(data == "ok"){
                                $('#add-donation').click();
                                $('#thank-donation-message').fadeIn();
                                $('#donation').fadeOut();
                        }else{
                                alert(data)
                        }
                },
                error: function(jqXHR, textStatus, errorThrown) {
                        alert('Une erreur AJAX est survenue.')
                }

 

Et je tombe sur la condition d'erreur "Une erreur AJAX est survenue". Cela arrive seulement sur ma machine virtuelle.

Si j'enlève le paramètre

ajax: 1

Dans data, je n'arrive plus sur l'erreur, mais cela empêche le fonctionnement normal. 

Est-ce que quelqu'un sait comment résoudre ce problème ?

Merci

 

Link to comment
Share on other sites

  • Sarah Yuna changed the title to Appel de displayAjax dans override [résolu]

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