在小枝中,我可以通过theme_config访问我的主题配置值。
我正在寻找一种方法来做这个干净的订户。
我试着通过Shopware\Storefront\Theme\ThemeConfigValueAccessor:得到它们
$salesChannelContext = $event->getSalesChannelContext();
$this->themeConfigAccessor->get('theme-config-value-key', $salesChannelContext, null);但是,我需要将$themeId作为第三个参数,而且我没有找到一种方法来获得当前SalesChannel的主题,而无需读取DB。
有人有解决这个案子的办法吗?有什么最佳实践方法吗?
发布于 2022-11-15 07:50:52
您可以直接从请求中获取当前主题,不需要转到DB:
$themeId = $request->attributes->get(SalesChannelRequest::ATTRIBUTE_THEME_ID);请记住,属性可能不会被设置,例如,如果请求不是店面请求。因此,您应该为$themeId添加一个空检查。
如果事件提供该请求,则可以直接从订阅的事件获取当前请求。如果没有,您可以将request_stack服务注入订阅服务器,并从那里获取当前请求。
https://stackoverflow.com/questions/74441694
复制相似问题