首页 > 解决方案 > 如何从 URL shopware 获取参数

问题描述

所以我正在使用由 symfony 和 vue(商店软件)制作的软件。我想创建一个插件来检查用户请求的链接,如果它包含特定的单词,我想向用户显示一个弹出窗口。我已经订阅了,我正在转储数据,但我在调试工具中一无所获?

<?php declare(strict_types=1);

namespace QRLinker\Subscriber;

use Shopware\Storefront\Page\PageLoadedEvent;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;


class QRLinkerSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            PageLoadedEvent::class => 'onPageLoaded',
        ];
    }

    public function onPageLoaded (PageLoadedEvent $event)
    {
        dump($event);
        dump($event->getRequest());
        // GET https://dev.example.com/?qr=hubi
        // dump($request->query->get('qr'));
    }
}
<?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="QRLinker\Subscriber\QRLinkerSubscriber" >
            <tag name="kernel.event_subscriber" />
        </service>
    </services>
</container>

标签: symfonyshopware

解决方案


此代码有效:

<?php declare(strict_types=1);

namespace QRLinker\Subscriber;

use Shopware\Storefront\Page\PageLoadedEvent;
use Shopware\Storefront\Page\GenericPageLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class QRLinkerSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            GenericPageLoadedEvent::class => 'onPageLoaded',
        ];
    }

    public function onPageLoaded (PageLoadedEvent  $event)
    {
        // GET https://dev.example.com/?qr=hubi
        dump($event->getRequest()->query->get('qr'));
        // $event->getRequest()->query->get('qr');
        // echo "shit";
    }
}

推荐阅读