Shopware 6 : 如何使用 Shopware\Core\Content\Category\Event 中的 `CategoryIndexerEvent`

Posted

技术标签:

【中文标题】Shopware 6 : 如何使用 Shopware\\Core\\Content\\Category\\Event 中的 `CategoryIndexerEvent`【英文标题】:Shopware 6 : How to use the `CategoryIndexerEvent` available in Shopware\Core\Content\Category\EventShopware 6 : 如何使用 Shopware\Core\Content\Category\Event 中的 `CategoryIndexerEvent` 【发布时间】:2021-01-11 09:05:54 【问题描述】:

我想在我的插件中使用Shopware\Core\Content\Category\Event\CategoryIndexerEvent.php

有人知道如何使用这个活动吗?

【问题讨论】:

【参考方案1】:

您需要创建一个EventSubscriber。对于您提到的事件,这看起来像这样。

首先你需要一个事件订阅者:

<?php declare(strict_types=1);

namespace MyPlugin;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\Content\Category\CategoryEvents;
use Shopware\Core\Content\Category\Event\CategoryIndexerEvent;

class MySubscriber implements EventSubscriberInterface

    public static function getSubscribedEvents(): array
    
        return [
            CategoryEvents::CATEGORY_INDEXER_EVENT => 'doMyStuff'
        ];
    

    public function doMyStuff(CategoryIndexerEvent $event): void
    
        $indexedCategories = $event->getIds();
        // Do stuff
    

其次,您需要在 DIC 中注册此订阅者(plugin/src/Resources/config/services.xml):

<!-- ... -->
<service id="MyPlugin\MySubscriber">
    <tag name="kernel.event_subscriber"/>
</service>
<!-- ... -->

【讨论】:

嘿,谢谢你的回答。你知道这个事件什么时候执行吗?我的意思是添加/更新类别? 分类索引后立即触发此事件。这是一个异步过程。如果您想对每个类别进行更改或写入,请选择 CategoryEvents::CATEGORY_WRITTEN_EVENT。

以上是关于Shopware 6 : 如何使用 Shopware\Core\Content\Category\Event 中的 `CategoryIndexerEvent`的主要内容,如果未能解决你的问题,请参考以下文章

Shopware 6:如何删除所有演示数据

Shopware 6 如何在scss中使用配置好的主题原色?

如何在 Shopware 6 中获取公用文件夹绝对路径?

Shopware 6 如何在监视脚本期间禁用 ESLint?

如何在 Shopware 6 中导入期间替换(不添加)属性?

如何在 Shopware 6 中创建可以在 Twig 文件中使用的自定义 Javascript?