fitting-pimcore / pimcore-events
5.0.0
2024-05-02 09:02 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^10.4.2
This package is auto-updated.
Last update: 2024-06-13 09:08:40 UTC
README
使用 Pimcore 事件来设置事件分发器、监听器和处理器。
通过 composer 安装
composer require fittinq\pimcore-events
设置示例
设置同步事件分发器
Fittinq\PimcoreEvents\Event\Dispatcher\EventDispatcher:
class: \Fittinq\PimcoreEvents\Event\Dispatcher\SynchronousEventDispatcher
arguments:
$eventHandlerRepository: '@Fittinq\PimcoreEvents\Event\Handler\EventHandlerRepository'
$logger: '@Pimcore\Log\ApplicationLogger'
设置异步事件分发器
# Consuming
Fittinq\PimcoreEvents\Command\ConsumeEventsCommand:
arguments:
- '@Pimcore\Log\ApplicationLogger'
- '@DavidMaes\RabbitMQ\Consumers\Consumer'
DavidMaes\RabbitMQ\Consumers\Consumer:
arguments:
- '@DavidMaes\RabbitMQ\Connection'
- 'object_data.events'
- 'direct'
- 'object_data.events'
- '%env(PIMCORE_ENVIRONMENT)%'
- '@Fittinq\PimcoreEvents\Event\RabbitMQHandler'
# The EventHandlerRepository is located in services_eventhandlers.yml.
Fittinq\PimcoreEvents\Event\RabbitMQHandler:
arguments:
- '@Fittinq\PimcoreEvents\Event\Handler\EventHandlerRepository'
- '@Pimcore\Log\ApplicationLogger'
# Producing
Fittinq\PimcoreEvents\Event\Dispatcher\EventDispatcher:
class: Fittinq\PimcoreEvents\Event\Dispatcher\AsynchronousEventDispatcher
arguments:
- '@DavidMaes\RabbitMQ\Producers\Producer'
- '@Pimcore\Log\ApplicationLogger'
DavidMaes\RabbitMQ\Producers\Producer:
arguments:
- '@DavidMaes\RabbitMQ\Connection'
- 'object_data.events'
- 'direct'
- '%env(PIMCORE_ENVIRONMENT)%'
设置事件监听器
Fittinq\PimcoreEvents\Event\Pimcore\DataObjectEventListener:
arguments:
- '@Fittinq\PimcoreEvents\Event\Dispatcher\EventDispatcher'
- '@Fittinq\PimcoreVersioning\ChangedFieldsExtractor'
- '@Fittinq\PimcoreEvents\Event\Pimcore\MessageFactory'
tags:
- name: kernel.event_listener
event: pimcore.dataobject.postUpdate
method: onPostUpdate
calls:
- method: addEventListener
arguments:
- '@serviceA'
- method: addEventListener
arguments:
- '@serviceB'
serviceA:
class: \Fittinq\PimcoreEvents\Event\Listener\DataObjectEventListener
arguments:
- 'objectA.example.objectbrick'
- ['field1', 'field2', 'objectbrick.field1']
- 'Pimcore\Model\DataObject\ObjectA'
- ['objectbrick'] #empty if there's no objectbrick
- '@ObjectADataObjectQuerier'
serviceB:
class: \Fittinq\PimcoreEvents\Event\Listener\DataObjectEventListener
arguments:
- 'objectB.example.no.objectbrick'
- ['field1', 'field2']
- 'Pimcore\Model\DataObject\Object'
- [] #empty if there's no objectbrick
- '@Fittinq\PimcoreDataObject\Objectbricks\ObjectbricksQuerier'
设置事件处理器
Fittinq\PimcoreEvents\Event\Handler\EventHandlerRepository:
calls:
- method: addEventHandler
arguments:
- 'objectA.example.objectbrick'
- '@HandlerA'
- method: addEventHandler
arguments:
- 'objectB.example.no.objectbrick'
- '@HandlerB'
HandlerA: ~
HandlerADecorator:
class: Fittinq\PimcoreEvents\Event\Handler\LockedDataObjectEventHandlerDecorator
decorates: AppBundle\HandlerAHandler
HandlerB: ~
HandlerADecorator:
class: Fittinq\PimcoreEvents\Event\Handler\LockedDataObjectEventHandlerDecorator
decorates: AppBundle\HandlerBHandler