Dep. Comercial +40 365-882.777 +40 722-241.273 Lun-Vin: 10:00-18:00
View Categories

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 Magento\Framework\Event\ManagerInterface;

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="Vendor\Module\Observer\MyObserver"/>
</event>

Apoi creează clasa Vendor\Module\Observer\MyObserver care implementează Magento\Framework\Event\ObserverInterface și metoda execute(Observer $observer), unde citești datele cu $observer->getData('cid').

Actualizat la 26/07/2026