fitting-pimcore/pimcore-events

该软件包已被废弃且不再维护。作者建议使用 fitting-pimcore/pimcore-commands 软件包。
最新版本(5.0.0)的软件包没有提供许可证信息。

5.0.0 2024-05-02 09:02 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