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
这样做的好处是,如果以后添加具有相同路径的新页面,您不需要添加额外的事件。
在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
这样做的好处是,如果以后添加具有相同路径的新页面,您不需要添加额外的事件。