---
title: Cum creez și declanșez un eveniment personalizat în Magento 2?
description: "Evenimentele permit modulelor să reacționeze la acțiuni fără a modifica codul de bază. În Magento 2, declanșezi un eveniment cu `dispatch()`, apoi îl asculți printr-un observer. > **Bună practică:** nu folosi `ObjectManager::getInstance()` direct — este un anti-pattern. Injectează `MagentoFrameworkEventManagerInterface` prin…"
url: "https://www.hostx.ro/kb/cum-creez-un-eveniment-in-magento-2/"
updated: "2026-07-26"
category: Programare / Aplicații / Magento
tags:
  - Magento 2
---

# Cum creez și declanșez un eveniment personalizat în Magento 2?

Evenimentele permit modulelor să reacționeze la acțiuni fără a modifica codul de bază. În Magento 2, declanșezi un eveniment cu `dispatch()`, apoi îl asculți printr-un observer.

> **Bună practică:** nu folosi `ObjectManager::getInstance()` direct — este un anti-pattern. Injectează `MagentoFrameworkEventManagerInterface` prin constructor (dependency injection).

### 1. Declanșarea evenimentului

```
use MagentoFrameworkEventManagerInterface;

class MyService
{
    private $eventManager;

    public function __construct(ManagerInterface $eventManager)
    {
        $this->eventManager = $eventManager;
    }

    public function doSomething()
    {
        $this->eventManager->dispatch('my_custom_event', ['cid' => 123]);
    }
}
```

Primul argument este numele evenimentului, al doilea este tabloul de date transmis observatorilor.

### 2. Ascultarea evenimentului (observer)

Declară observer-ul în `etc/events.xml`:

```
<event name="my_custom_event">
    <observer name="my_observer" instance="VendorModuleObserverMyObserver"/>
</event>
```

Apoi creează clasa `VendorModuleObserverMyObserver` care implementează `MagentoFrameworkEventObserverInterface` și metoda `execute(Observer $observer)`, unde citești datele cu `$observer->getData('cid')`.
