shopware6 - 在配置文件页面或路由 http://domain/account/* 中注入数据

shopware6 - inject data in profile page or route http://domain/account/*

在Shopware6中,我想为路由http:///domain/account/*写一个控制器。 只有我必须写在 eventListener 中还是有其他可能性? 我也找不到此 url (http:///domain/account/address) 的事件。

这是我目前的方式,但这还不够。

文件:{moduleOneSubscriber.php}

public static function getSubscribedEvents(): array
{
    return [
        AccountLoginPageLoadedEvent::class => 'myFunctionName',
        CheckoutRegisterPageLoadedEvent::class => 'myFunctionName',
        AccountProfilePageLoadedEvent::class => 'myFunctionName',
        AccountOverviewPageLoadedEvent::class => 'myFunctionName',
        AccountPaymentMethodPageLoadedEvent::class => 'myFunctionName',
        AccountOrderPageLoadedEvent::class => 'myFunctionName',
    ];
}

似乎没有只针对所有 account/* 页面的通用事件,所以您的做法基本上是正确的:收集所有帐户页面的所有事件。

例如,您可以使用 Symfony 探查器工具栏并在所有树选项卡的事件选项卡中搜索 PageLoaded 事件。

所以您可以在评论中添加 Valerii 提到的事件。

另一种方法是订阅 Shopware\Storefront\Page\GenericPageLoadedEvent 并检查传递给事件的请求的路径信息,无论您是否在 account.

if (!str_starts_with($event->getRequest()->getPathInfo(), '/account/') {
   return;
);

// do your thing

这样做的好处是,如果以后添加具有相同路径的新页面,您不需要添加额外的事件。