THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour,

je découvre Thélia2 avec enthousiasme et je m'essaie au développement d'un module qui aurait pour but de créer une rubrique (Category) dès son installation (dans postActivation() par exemple ?).

Une âme charitable pourrait-elle m'aiguiller s'il vous plait ?

Je suis parti sur quelque chose comme ça pour l'instant :

public function postActivation(ConnectionInterface $con = null)
    {
        $createEvent = new CategoryCreateEvent();

        $createEvent
            ->setTitle('Category Title')
            ->setLocale('en_US')
            ->setParent(0)
            ->setVisible(1)
        ;

        $newCategory= new CategoryAction($createEvent, $eventName, $dispatcher);
    }

1. Est-ce le bon départ ?
2. Comment renseigner $eventName et $dispatcher ?

Merci à vous.

Last edited by alberttyty (15-12-2017 16:12:37)

Offline


Presque ! Au lieu d'invoquer directement l'action CategoryAction il te faut dispatcher un évènement, et c'est le dispatcher qui invoquera l'action, ainsi que tous les autres listeners de cet évènement :

Au lieu d'écrire :

$newCategory= new CategoryAction($createEvent, $eventName, $dispatcher);

tu vas écrire :

$this->getDispatcher()->dispatch(TheliaEvents::CATEGORY_CREATE, $createEvent);

$newCategory = $createEvent->getCategory();

De même, pour ajouter de l'information ou modifier la catégorie, tu vas dispatcher un evènement TheliaEvents::CATEGORY_UPDATE :

                    // Update the newly created category
                    $updateEvent = new CategoryUpdateEvent($newCategory->getId());

                    $updateEvent
                        ->setTitle(...)
                        ->setParent(...)
                        ->setLocale(...)
                        ->setVisible(...)
                        ->setChapo(...)
                        ->setDescription(...)
                        ->setPostscriptum(...);

                    $this->dispatcher->dispatch(TheliaEvents::CATEGORY_UPDATE, $updateEvent);

Un peu plus d'infos ici : http://doc.thelia.net/en/documentation/ … index.html et ailleurs dans la doc smile


OpenStudio Toulouse

Offline


Ok j'ai compris ! super ! merci beaucoup ! smile