THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline

#1 [Résolu] Question Events

(18-04-2023 08:01:51)


Hello!

Petite question,

Dans les modules que je suis en train de développer (conversion module Thelia 1 pour Thelia 2.5.2), je dois exécuter du code :
- AVANT la suppression de catégorie
- AVANT la création/modification/suppression de client/commande
- APRES la création/modification/suppression de client/commande

Du coup, je voulais savoir si, dans ma gestion d'event de mes modules, en mettant ça (par exemple) :

TheliaEvents::CUSTOMER_DELETEACCOUNT => ["preDeleteCustomer", 130]

ça fonctionnerait aussi bien que

CustomerEvent::PRE_DELETE => ["preDeleteCustomer", 128]

Est-ce pareil ?

En fait j'avais un erreur en utilisant, ce qui semble être les anciens events, comme BEFORE_DELETECUSTOMER, du coup j'ai regardé dans TheliaEvents et il n'y avait plus les BEFORE_ / AFTER_ ... mais en cherchant dans un vieux thelia 2, j'ai vu les PRE_DELETE / POST_DELETE.

Le mieux c'est quoi ?

Merci d'avance!

Last edited by Elyos (11-04-2024 09:23:05)


Aide les autres, ils t'aideront en retour.

Offline


Bonjour,
Les events BEFORE_XX / AFTER_XX sont dépréciés depuis la Thelia 2.4.

A priori les 2 méthodes de gestion des fonctionne de la même manière :

TheliaEvents::CUSTOMER_DELETEACCOUNT

est toujours valide pour la v2.5.2 de Thelia

Cela dit étant donné que tu cibles la compatibilité avec la dernière version de Thelia en date, je pense qu'il faut privilégier l'appel suivant pour la gestion des évènements :

CustomerEvent::PRE_DELETE => ["preDeleteCustomer", 128]

Last edited by Nog (13-05-2023 18:32:23)

Offline


Ok je vais faire ça.

ça sera plus "propre" wink


Aide les autres, ils t'aideront en retour.

Offline


Bon bah...

Undefined constant Thelia\Core\Event\Category\CategoryEvent::POST_INSERT

???


Aide les autres, ils t'aideront en retour.

Offline


Il faut en fait utiliser

use Thelia\Model\Event\CategoryEvent;

et non

use Thelia\Core\Event\Category\CategoryEvent;

Aide les autres, ils t'aideront en retour.

Offline


Autre question :

Quelle est la meilleure méthode pour savoir si un event est déclenché depuis le back ou le front ?


Aide les autres, ils t'aideront en retour.

Offline


Ça a une importance ? Un event peut indifféremment être envoyé par le back ou le front.


OpenStudio Toulouse

Offline


Salut Roadster,

Alors en fait, j'ai deux modules qui permettent d'ajouter des champs supplémentaires : l'un aux commandes, l'autre aux clients.

J'utilise (pour celui des clients) les events CustomerEvent::PRE_INSERT, POST_INSERT, ...

Certains champs servent juste à l'inscription. Exemple : case à cocher "je certifie être majeur" ou "j'accepte les CGV" ... et je pars du principe que si on crée un compte depuis le back office, ces "champs" ne sont pas utiles. Donc j'aurais aimé faire la différence au déclenchement de l'event.
Si back => je ne vérifie pas ces champs
Si front => je vérifie ces champs

D'où l'utilité de savoir si l'event est déclenché depuis le back ou le front.


Aide les autres, ils t'aideront en retour.

Offline


C'est la route utilisée qui te permet de dire si tu es en BO ou en FO. Avec Thelia 2.5, tu peux tester ça facilement :

if (Thelia\Core\HttpFoundation\Request::$isAdminEnv) {
    // On est en BO
   ...
}

OpenStudio Toulouse

Offline


roadster31 wrote:

C'est la route utilisée qui te permet de dire si tu es en BO ou en FO. Avec Thelia 2.5, tu peux tester ça facilement :

if (Thelia\Core\HttpFoundation\Request::$isAdminEnv) {
    // On est en BO
   ...
}

Il manque un anti-slash devant Thelia\Core\... et ça marche impec! Merci!

Comme j'avais déjà un

$this->request = $requestStack->getCurrentRequest();

dans mon __construct, j'ai plutôt mis ça :

public function __construct(RequestStack $requestStack)
{
    $this->request = $requestStack->getCurrentRequest();
    $this->isAdmin = $this->request::$isAdminEnv;
}

Last edited by Elyos (12-05-2023 15:05:48)


Aide les autres, ils t'aideront en retour.