как правильно пользоваться магазином событий-подписчиком - PullRequest
0 голосов
/ 03 сентября 2018

Я создал собственный плагин SwagStartup в Shopware, и он работает, вызывая URL-адрес типа "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 голосов
/ 03 сентября 2018

Я попробовал то же самое в testplugin, и он отлично работает: https://github.com/mnaczenski/SubscriberTest

Кажется, ваш подписчик не опознан. Какую версию магазина вы используете?

...