You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware 6 前端/TWIG中如何获取当前销售渠道域名?

如何在Shopware中获取当前请求对应销售渠道的完整域名

由于Shopware支持将带路径的URL配置为销售渠道域名(例如https://www.example.com/de),直接读取请求的主机信息(如$request->getHost())会丢失路径部分,且无法保证匹配后台配置的准确域名。以下是可靠的实现方式:

在PHP代码中获取

方法1:通过SalesChannelContext获取

如果你的代码能直接拿到SalesChannelContext(比如控制器、订阅器中),可以直接从销售渠道实体中提取配置的完整域名:

use Shopware\Core\System\SalesChannel\SalesChannelContext;

public function getConfiguredDomain(SalesChannelContext $context): string
{
    // 遍历当前销售渠道的所有域名配置,获取当前请求匹配的那一个
    foreach ($context->getSalesChannel()->getDomains() as $domain) {
        // getUrl()返回后台配置的完整域名,包含路径
        return $domain->getUrl();
    }

    // fallback逻辑(正常请求下不会触发)
    return $context->getSalesChannel()->getDomain() ?? '';
}

方法2:通过SalesChannelDomainService获取

如果需要从请求出发匹配域名,可以注入SalesChannelDomainService和RequestStack来实现:

use Shopware\Core\System\SalesChannel\SalesChannelDomainService;
use Symfony\Component\HttpFoundation\RequestStack;

class CustomDomainService
{
    private SalesChannelDomainService $domainService;
    private RequestStack $requestStack;

    public function __construct(SalesChannelDomainService $domainService, RequestStack $requestStack)
    {
        $this->domainService = $domainService;
        $this->requestStack = $requestStack;
    }

    public function getCurrentSalesChannelDomain(): string
    {
        $request = $this->requestStack->getCurrentRequest();
        if (!$request) {
            throw new \RuntimeException('No active request detected');
        }

        // 精准匹配当前请求对应的销售渠道域名实体
        $domainEntity = $this->domainService->getSalesChannelDomain($request);
        
        return $domainEntity->getUrl();
    }
}

在Twig模板中获取

在前端模板里,可以直接通过全局的salesChannel变量获取配置的完整域名:

<!-- 输出当前销售渠道的完整配置域名 -->
<div>当前销售渠道域名:{{ salesChannel.url }}</div>

这些方法的核心是依赖Shopware内置的服务和上下文,确保获取到的域名完全匹配后台配置的值,不管是顶级域名还是带路径的域名都能准确返回。

内容的提问来源于stack exchange,提问作者newgennerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:21:00