我在Magento Stack Exchange中提出了这个问题,但没有得到任何人的评论/回答。所以我删除了那里的问题并在SO中提出同样的问题。
所以,我有一个外部应用程序,它将管理员用户登录到管理面板。准系统结构如下:
<?php
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
class TestApp extends \Magento\Framework\App\Http implements \Magento\Framework\AppInterface {
protected $_resource = null;
protected $storeManager = null;
public function __construct(
//ActionContext $context,
\Magento\Framework\App\ResourceConnection $resource, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Customer\Model\CustomerFactory $customerFactory
// \Magento\Catalog\Model\Session $catalogSession,
// \Magento\Framework\App\State $state
) {
$this->_resource = $resource;
$this->storeManager = $storeManager;
}
public function launch() {
$currentStoreID = $this->storeManager->getStore()->getStoreId();
}
}
$bootstrap = Bootstrap::create(BP, $_SERVER);
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('TestApp');
$bootstrap->run($app);
我已经删除了实际的登录部分,因为这超出了这个问题的范围。
如果我拨打$this->storeManager->getStore()->getStoreId();
,它会返回默认的商店ID,这不是我想要的。此应用程序驻留在子存储下(不确定这是否是正确的术语),我想要当前的商店ID,而不是默认的商店ID。
跟进后,我发现此closed issue用户被告知使用\Magento\Store\Model\StoreResolver::getCurrentStoreId
。 $this->storeManager
内部有storeResolver
,但这是受保护的属性,因此无法访问。
我的问题是,如何获取当前商店ID而不是默认商店ID?