我已经在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()应该已被调用-事实并非如此。
怎么了?有人可以告诉我吗?
答案 0 :(得分:0)
我在testplugin中尝试了相同的方法,并且工作正常:https://github.com/mnaczenski/SubscriberTest
您的订阅者似乎未被识别。您使用哪种商店软件版本?