如何正确使用Shopware事件订阅者

时间:2018-09-03 10:02:54

标签: plugins shopware subscriber

我已经在Shopware中创建了一个自定义插件 SwagStartup ,它的工作原理是调用“ shopware.project / myDemo”之类的网址。

然后我尝试在此插件中定义/使用事件订阅者,下面是代码:

<?php
namespace SwagStartup\Subscriber;
use Enlight\Event\SubscriberInterface;

class RoutingSubscriber implements SubscriberInterface
{
    public static function getSubscribedEvents(){
        return ['Enlight_Controller_Action_PreDispatch' => 'onPreDispatch'];
    }
    public function onPreDispatch(\Enlight_Event_EventArgs $args){
        die('here!');
    }
}

以及XML文件:Resources / services.xml:

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="swag_startup.subscriber.routing_subscriber"
                 class="SwagStartup\Subscriber\RoutingSubscriber">
            <tag name="shopware.event_subscriber"/>
        </service>
    </services>
</container>

当我像以前一样调用url时,我希望看到die()函数的输出,因为我认为订户和功能应该已经捕获了 Enlight_Controller_Action_PreDispatch 事件onPreDispatch()应该已被调用-事实并非如此。

怎么了?有人可以告诉我吗?

1 个答案:

答案 0 :(得分:0)

我在testplugin中尝试了相同的方法,并且工作正常:https://github.com/mnaczenski/SubscriberTest

您的订阅者似乎未被识别。您使用哪种商店软件版本?