在twig中,我可以通过theme_config访问我的主题配置值。
我正在寻找一种在订阅者中干净地做到这一点的方法。
我试图通过ShopwareStorefrontThemeThemeConfigValueAccessor:
$salesChannelContext = $event->getSalesChannelContext();
$this->themeConfigAccessor->get('theme-config-value-key', $salesChannelContext, null);
但是我需要$themeId
作为第三个参数,我没有找到方法获取当前SalesChannel的主题,而不需要从数据库中读取。
有人有解决这个问题的办法吗?是否存在最佳实践方法?
您可以直接从请求中获得当前主题,而不需要去DB:
$themeId = $request->attributes->get(SalesChannelRequest::ATTRIBUTE_THEME_ID);
请记住,该属性可能不被设置,例如,如果请求不是店面请求。因此,您应该为$themeId
添加空检查。
如果事件提供了当前请求,则可以直接从订阅的事件中获取当前请求。如果没有,你可以注入request_stack
服务到你的订阅者,并从那里获得当前的请求。