如何从Pimcore设置获取当前网站URL及CSV导出缩略图链接的域名与协议
Pimcore CSV导出中获取域名/协议及网站URL的正确方式
一、获取域名与协议
分两种场景针对性处理:
- HTTP请求触发的导出(如后台手动操作):直接从当前请求上下文提取,确保和用户访问的协议/域名完全一致
use Pimcore\Http\RequestHelper; $requestHelper = \Pimcore::getContainer()->get(RequestHelper::class); $scheme = $requestHelper->getCurrentRequest()->getScheme(); // 返回 http 或 https $host = $requestHelper->getCurrentRequest()->getHttpHost(); // 返回含端口的域名(如 example.com:8080) - 离线/CLI任务触发的导出:无请求上下文时,需读取Pimcore系统预配置参数。先在
系统设置 > 网站设置中配置好base_url(完整URL,如 https://example.com),再通过以下代码拆分提取:$siteConfig = \Pimcore\Config::getWebsiteConfig(); $baseUrl = $siteConfig->get('base_url'); $urlParts = parse_url($baseUrl); $scheme = $urlParts['scheme']; $host = $urlParts['host'];
二、获取当前网站的URL
- 多站点场景:先获取当前请求绑定的站点实例,再提取其基础URL
$site = \Pimcore\Tool::getCurrentSite(); if ($site) { $siteBaseUrl = $site->getUrl(); // 返回当前站点的完整基础URL,如 https://shop.example.com } - 单站点/全局默认场景:直接读取系统配置的
base_url即可,代码同上述离线场景中的$siteConfig->get('base_url')
注意:CSV导出时优先根据触发场景选择对应方式——后台操作选请求上下文,定时/离线任务选系统配置,避免出现协议/域名不匹配的问题。
内容的提问来源于stack exchange,提问作者Eugene Kaurov
相关产品推荐
相关产品推荐

