THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

J'utilise le module "ExpressCheckout"  de roadster31, installé sur un Thelia 2.3.3 et j'ai un comportement étrange, accompagné d'un message d'erreur.
Quand je remplis le formulaire avec les infos clients, j'ai le message d'erreur suivant :

Sorry, an error occurred: In this context (no cart in session), an EventDispatcher should be provided to Session::getSessionCart().

Il suffit de valider à nouveau le formulaire pour que tout ce passe bien...
Une idée pour corriger ça ?

Sinon, au passage, il y a une petite faute dans le /I18n/en_US.php du module : il y a un Û à la place de U dans la traduction.

Offline


J'ai bien précisé que ce module est en cours de développement et doit être adapté à chaque situation.

Par ailleurs, ç aucun moment ce module ne manipule le Cart. Donc ça me semble bizarre que l'erreur soit due au module. Regarde plutôt du côté des modules de transport et/ou de paiement.

Indice: since Thelia 2.1.0 alpha 2, Thelia\Core\HttpFoundation\Session\Session::getCart is deprecated. Use getSessionCart instead.


OpenStudio Toulouse

Offline


Merci pour l'indice.

En effet, en désactivant le module "CustomDelivery" 1.0.6 (pourtant sensé être compatible Thélia > 2.1), je n'ai plus l'erreur et le formulaire fonctionne comme attendu.
Bon, par contre, j'en ai besoin du Custom Delivery... J'ai essayé de regarder, mais je n'ai pas trouvé a priori d'appel getCart suspect. Y'a des $cart = $this->getRequest()->getSession()->getSessionCart(); mais ça me parait normal.

J'avoue ne pas avoir le niveau pour dépiauter le module et trouver ce qui bloque lors de son interaction avec ExpressCheckout (lors d'une commande "normal", où l'on se log ou s'inscrit, aucun problème). Des pistes quelqu'un ?

Offline


Il faut passer le dispatcher à Session::getSessionCart() :

$cart = $this->getRequest()->getSession()->getSessionCart($this->getDispatcher()); 

(lignes 247 et 145 de CustomDelivery.php).

Si tu ne le passe pas, ça peut marcher mais à la condition que le dispatcher soit déjà dans la session, ce qui dépend un peu des modules mis en œuvre.


OpenStudio Toulouse

Offline


Je viens de pousser la version 1.0.7 du module, qui est censée corriger ce problème.


OpenStudio Toulouse

Offline


Merci pour cette modification !
Je viens de tester le nouveau module CustomDelivery v1.0.7 +  ExpressCheckout sur un Thelia 2.3.3 et tout fonctionne parfaitement à présent.

Offline