THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour à tous,

Je me permets de créer un nouveau topic pour appeler à l'aide :

J'ai récemment mis à jour Thelia sur un site e-commerce que je gère afin de pouvoir installer un module dont j'avais besoin. La mise à jour s'est bien passé mais depuis, impossible de passer une commande. Au moment de finaliser cette dernière, j'obtiens cette erreur (en mode développement) :


LogicException in TemplateHelper.php line 43:
This class should be initialized before getInstance() call.

in TemplateHelper.php line 43
at TemplateHelper::getInstance() in OrderStatusListener.php line 177
at OrderStatusListener->checkSendOrderConfirmationMessageToCustomer(object(OrderEvent), 'action.order.sendOrderConfirmationEmail', object(ContainerAwareEventDispatcher))
at call_user_func(array(object(OrderStatusListener), 'checkSendOrderConfirmationMessageToCustomer'), object(OrderEvent), 'action.order.sendOrderConfirmationEmail', object(ContainerAwareEventDispatcher)) in EventDispatcher.php line 181
at EventDispatcher->doDispatch(array(array(object(OrderStatusListener), 'checkSendOrderConfirmationMessageToCustomer'), array(object(Order), 'sendConfirmationEmail')), 'action.order.sendOrderConfirmationEmail', object(OrderEvent)) in EventDispatcher.php line 46
at EventDispatcher->dispatch('action.order.sendOrderConfirmationEmail', object(OrderEvent)) in Order.php line 467
at Order->orderBeforePayment(object(OrderEvent), 'action.order.beforePayment', object(ContainerAwareEventDispatcher))
at call_user_func(array(object(Order), 'orderBeforePayment'), object(OrderEvent), 'action.order.beforePayment', object(ContainerAwareEventDispatcher)) in EventDispatcher.php line 181
at EventDispatcher->doDispatch(array(array(object(Order), 'orderBeforePayment'), array(object(Coupon), 'afterOrder')), 'action.order.beforePayment', object(OrderEvent)) in EventDispatcher.php line 46
at EventDispatcher->dispatch('action.order.beforePayment', object(OrderEvent)) in Order.php line 444
at Order->create(object(OrderEvent), 'action.order.pay', object(ContainerAwareEventDispatcher))
at call_user_func(array(object(Order), 'create'), object(OrderEvent), 'action.order.pay', object(ContainerAwareEventDispatcher)) in EventDispatcher.php line 181
at EventDispatcher->doDispatch(array(array(object(Order), 'create')), 'action.order.pay', object(OrderEvent)) in EventDispatcher.php line 46
at EventDispatcher->dispatch('action.order.pay', object(OrderEvent)) in OrderController.php line 334
at OrderController->pay()
at call_user_func_array(array(object(OrderController), 'pay'), array()) in HttpKernel.php line 139
at HttpKernel->handleRaw(object(Request), '1') in HttpKernel.php line 62
at HttpKernel->handle(object(Request), '1', true) in TheliaHttpKernel.php line 76
at TheliaHttpKernel->handle(object(Request), '1', true) in ParamInitMiddleware.php line 87
at ParamInitMiddleware->handle(object(Request), '1', true) in SessionMiddleware.php line 80
at SessionMiddleware->handle(object(Request), '1', true) in StackedHttpKernel.php line 23
at StackedHttpKernel->handle(object(Request), '1', true) in Kernel.php line 185
at Kernel->handle(object(Request)) in index_dev.php line 37

Après vérification, je vois que le module d'envoi de mail pour informer du changement de statut de la commande appelle des méthodes qui sont dépréciées dans Thelia 2.3. Le bloc incriminé est le suivant (avec la ligne exacte qui pose problème) :

public function checkSendOrderConfirmationMessageToCustomer(OrderEvent $event)
    {

        $event->stopPropagation();

      (traitement...)

        if ($event->getOrder()->getPaymentModuleId() === WireTransfer::getModuleId() || $event->getOrder()->getPaymentModuleId() === Cheque::getModuleId()) {
ICI >>>$this->parser->setTemplateDefinition(TemplateHelper::getInstance()->getActivePdfTemplate())
            $html = $this->parser->render(ConfigQuery::read('pdf_order_file', 'order').'.html', array('order_id' => $order->getId()));

Régler ce genre de problème dépasse de loin mes compétences... Est-ce que l'un de vous saurait quoi faire ?

Merci d'avance !


Développeur web Junior

Offline


De quel module s'agit-il ?


OpenStudio Toulouse

Offline


Il s'agit d'un module custom, crée à partir du module Paybox payment. Ce qui doit expliquer pourquoi il utilise des méthodes dépréciées : il n'a pas du être mis à jour pour avoir les nouveaux noms de fonction et de dépendances...


Développeur web Junior

Offline


Du coup, je suppose qu'il faut corriger le module ?


OpenStudio Toulouse

Offline


Effectivement, c'est ce que j'ai fait, et ça a eu l'air de fonctionner.

En revanche j'ai un autre problème bien plus coton : j'ai voulu faire la même chose sur le site en prod, mettre Thelia à jour, et désormais je ne peux plus accéder à l'admin. Le mode développement m'obtient cette erreur :

ServiceNotFoundException in Container.php line 322:
You have requested a non-existent service "hookadminhome.hook.css".
in Container.php line 322

at Container->get('hookadminhome.hook.css') in ContainerAwareEventDispatcher.php line 188
at ContainerAwareEventDispatcher->lazyLoad('hook.2.main.head-css') in ContainerAwareEventDispatcher.php line 165
at ContainerAwareEventDispatcher->dispatch('hook.2.main.head-css', object(HookRenderEvent)) in Hook.php line 106
at Hook->processHookFunction(array('name' => 'main.head-css', 'location' => 'head_css'), object(Smarty_Internal_Template)) in fb2d7e690efe670ddf2b9c8aab007e14a0c55978.file.login.html.php line 85
at content_5c4590ccdfdab9_94721861(object(Smarty_Internal_Template)) in smarty_internal_templatebase.php line 188
at Smarty_Internal_TemplateBase->fetch('file:login.html') in SmartyParser.php line 370
at SmartyParser->internalRenderer('file', 'login.html', array('locale' => 'fr_FR', 'lang_code' => 'fr', 'lang_id' => '1', 'edit_language_id' => '1', 'edit_language_locale' => 'fr_FR', 'edit_currency_id' => '1', 'current_url' => 'monSite/admin/login'), true) in SmartyParser.php line 394
at SmartyParser->render('login.html', array('locale' => 'fr_FR', 'lang_code' => 'fr', 'lang_id' => '1', 'edit_language_id' => '1', 'edit_language_locale' => 'fr_FR', 'edit_currency_id' => '1', 'current_url' => 'monSite/admin/login')) in BaseAdminController.php line 390
at BaseAdminController->renderRaw('login', array()) in BaseAdminController.php line 337
at BaseAdminController->render('login') in SessionController.php line 39
at SessionController->showLoginAction()
at call_user_func_array(array(object(SessionController), 'showLoginAction'), array()) in HttpKernel.php line 117
at HttpKernel->handleRaw(object(Request), '1') in HttpKernel.php line 61
at HttpKernel->handle(object(Request), '1', true) in TheliaHttpKernel.php line 80
at TheliaHttpKernel->handle(object(Request), '1', true) in ParamInitMiddleware.php line 87
at ParamInitMiddleware->handle(object(Request), '1', true) in SessionMiddleware.php line 80
at SessionMiddleware->handle(object(Request), '1', true) in StackedHttpKernel.php line 23
at StackedHttpKernel->handle(object(Request), '1', true) in Kernel.php line 188
at Kernel->handle(object(Request)) in index_dev.php line 37

Et là, j'ai eu beau chercher toute la matinée, je ne vois pas ce qui provoque ça. Il n'y a pourtant pas ou peu de différence entre l'appli locale et celle en prod...


Développeur web Junior

Offline