chrzanek98/pimcore-object-event-listeners-bundle

此捆绑包允许以简单灵活的方式为 pimcore DataObjects 创建事件监听器

1.0.0 2018-10-25 23:55 UTC

This package is auto-updated.

Last update: 2024-09-29 05:21:22 UTC


README

SymfonyInsight

Latest Stable Version Latest Unstable Version License

安装

步骤 1: 下载捆绑包

打开命令行,进入您的项目目录并执行

$ composer require chrzanek98/pimcore-object-event-listeners-bundle

此命令需要您全局安装了 Composer,具体请参考 Composer 文档中的安装章节

步骤 2: 启用捆绑包

然后,将捆绑包添加到项目中 app/AppKernel.php 文件中注册的捆绑包列表中,以启用捆绑包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new \Chrzanek98\PimcoreObjectEventListenersBundle\Chrzanek98PimcoreObjectEventListenersBundle(),
        );

        // ...
    }

    // ...
}

它是如何工作的?

步骤 1

创建处理器类,例如 AcmeEventListener.php,并扩展 AbstractHandler

<?php

namespace AppBundle\EventListeners;

use Chrzanek98\PimcoreObjectEventListenersBundle\EventListeners\Providers\AbstractHandler;
use Pimcore\Event\Model\DataObjectEvent;

class AcmeEventListener extends AbstractHandler
{
    // ...
}

步骤 2

实现 canHandle 方法

<?php

namespace AppBundle\EventListeners;

// ...

class AcmeEventListener extends AbstractHandler
{
    public function canHandle(DataObjectEvent $element)
    {
        return $element->getObject() instanceof Acme;
    }
}

步骤 3

使用所需的钩子,目前可用的有 pre/post Add/Update/Delete

<?php

namespace AppBundle\EventListeners;

// ...

class AcmeEventListener extends AbstractHandler
{
    public function preUpdate(DataObjectEvent $element)
    {
        throw new NotFoundHttpException('Lorem ipsum dolor sit amet');
    }

    public function canHandle(DataObjectEvent $element)
    {
        return $element->getObject() instanceof Acme;
    }
}

步骤 4

将您的事件处理器注册为带有标签 object.handler 的服务

    object.handler.acme:
        class: AppBundle\EventListeners\AcmeEventListener
        tags:
            - { name: object.handler }