Bonjour @mathildehub,
Je comprends tout à fait la situation, c'est un piège courant. Lorsque ConorderfeeEngine est instancié via new ConorderfeeEngine($this), son constructeur s'attend à ce que l'objet module ($this) soit déjà dans un état stable et que toutes ses propriétés essentielles, comme $this->context, soient bien définies. Si le contexte n'est pas encore entièrement chargé ou si le module n'a pas fini son propre processus d'initialisation lors de l'appel à getEngine(), cela peut entraîner l'accès à des propriétés nulles ou non définies, provoquant l'erreur fatale que tu décris.
Pour résoudre ce problème de manière robuste, il faut s'assurer que le contexte du module est bien disponible avant de passer l'instance du module à son moteur. Voici une modification à apporter à votre méthode getEngine() dans conorderfee/conorderfee.php :
function getEngine()
{
if (!$this->engine) {
// Assurer que le contexte du module est disponible
if (!isset($this->context) || !($this->context instanceof \Context)) {
$this->context = \Context::getContext();
}
$this->engine = new ConorderfeeEngine($this);
}
return $this->engine;
Ce petit ajout garantit que $this->context est toujours une instance valide de \Context avant que ConorderfeeEngine n'essaie d'y accéder. Cela stabilise l'initialisation du moteur et évite les erreurs dues à des propriétés non initialisées.
Pour des fonctionnalités plus avancées et une gestion plus poussée des frais de commande conditionnels, il est souvent plus simple et plus maintenable d'utiliser un module dédié comme Frais conditionnels de commande qui gère ces subtilités d'initialisation et de contexte nativement.