THELIA Forum

Welcome to the THELIA support and discusssion forum

Offline

#1 token_url en ajax

(02-03-2016 13:55:39)


Bonjour,

Je cherche à supprimer un produit du panier en ajax mais je suis bloqué car je n'envoie pas de token, comment faire svp ?

Offline

Offline

#3 Re: token_url en ajax

(02-03-2016 15:19:13)


Je me suis mal exprimer je pense. Je souhaite appeler via de l'ajax la route "/cart/delete/$item_id" mais je ne peux pas et je suppose que c'est parcque la methode appelé attend de récupérer un token que je n'envoie pas via ajax.

Offline

#4 Re: token_url en ajax

(05-04-2019 09:48:28)


Bonjour,

J'ai repris le site sur lequel Ronan travaillait et il semble qu'il ait suivi ton conseil, Roadster.
Seulement, le token dont vous parliez en 2016 me pose problème.
Après avoir migré le site de la 2.2.2 à la 2.3.4, le bouton qui vidait le panier ne fonctionne plus :

<div class="delete-all-item text-right">
    <a href="{token_url path="/cart/delete/all"} success_url={url path='/cart'}" class="btn btn-vert">{intl l="Vider tout le panier" d="fo.lcv"}</a>
</div>

La seule erreur que je peux trouver est dans le fichier log-thelia.txt :

1: ERROR [CartController.php:deleteItem()] {126} 2019-04-05 10:42:09: error during deleting cartItem with message : Tried to validate an invalid token

Une idée de ce qui peut rendre ce token invalide...?


Développeur web Junior

Offline

#5 Re: token_url en ajax

(05-04-2019 16:52:58)


Oui : il est peut-être trop ancien, un token d'URL a une durée de vie limitée.


CQFDev | Sites, boutiques, modules, développement et intégration pour Thelia 1 et 2

Offline

#6 Re: token_url en ajax

(08-04-2019 08:37:55)


J'ai fouillé de ce côté là mais je n'ai trouvé aucune différence dans la gestion du token entre la version 2.2.2 et la 2.3.4... Et après avoir attendu quelques heures, je remarque que le token a effectivement changé mais j'ai toujours la même erreur. hmm

Last edited by HeishPi (08-04-2019 12:05:49)


Développeur web Junior

Offline

#7 Re: token_url en ajax

(10-04-2019 13:24:48)


Toujours la même erreur, j'ai pourtant essayé des tas de trucs.

Si jamais, voici la fonction présente dans local/modules/Front/Controller/CartController.php :

public function deleteAllItems() {
        $cart = $this->getSession()->getSessionCart($this->getDispatcher());
        $items = CartItemQuery::create()->filterByCartId($cart->getId());

        foreach ($items as $item) {
            $cartEvent = $this->getCartEvent();
            $cartEvent->setCartItemId($item->getId());

            $this->getDispatcher()->dispatch(TheliaEvents::CART_DELETEITEM, $cartEvent);
            $this->afterModifyCart();
        }
    }

Je pense qu'il y a peut-être un problème avec l'utilisation du dispatcher, du moins cette page de la doc me le laisse croire. Mais j'avoue ne pas bien comprendre comment l'adapter pour ma fonction.
Pour l'instant j'ai essayé ceci, en vain :

public function deleteAllItems(EventDispatcherInterface $dispatcher) {
        $cart = $this->getSession()->getSessionCart($this->getDispatcher());
        $items = CartItemQuery::create()->filterByCartId($cart->getId());

        foreach ($items as $item) {
            $cartEvent = $this->getCartEvent();
            $cartEvent->setCartItemId($item->getId());

            $dispatcher->dispatch(TheliaEvents::CART_DELETEITEM, $cartEvent);
            $this->afterModifyCart();
        }
    }

Encore aujourd'hui tout ce que j'obtiens, c'est cette ligne dans les logs :

error during deleting cartItem with message : Tried to validate an invalid token

Développeur web Junior