Sometimes, during Magento 2 customization you need to get the store Information programmatically. You may need to get a current Store ID, Store Code, Name, Website ID, or current URL.
To retrieve this data use the singleton instance of the following class:
\Magento\Store\Model\StoreManagerInterface
For example, you can include it in your class constructor and then call:
<?php
namespace \MyCompany\ExampleModule\Model;
class Example
{
private $storeManager;
public function __construct( ... \Magento\Store\Model\StoreManagerInterface $storeManager, ... ) {
... $this->storeManager = $storeManager; ... } /**
* Examples
*/
public function execute()
{
/* Get Current Store ID */
$storeId = $this->storeManager->getStore()->getId();
/* Get Current Store Code */
$storeCode = $this->storeManager->getStore()->getCode();
/* Get Current Store Name */
$storeName = $this->storeManager->getStore()->getName();
/* Get Current Store Status */
$isActive = $this->storeManager->getStore()->isActive();
/* Get Current Website ID */
$websiteId = $this->storeManager->getStore()->getWebsiteId();
/* Get Current URL */
$currentUrl = $this->storeManager->getStore()->getCurrentUrl();
/* Get Login Page URL */
$loginPageUrl = $this->storeManager->getStore()->getUrl('customer/account/login');
/* Get Code of Store With ID 2 */
$secondStoreCode = $this->storeManager->getStore(2)->getCode();
} }
You can use the object manager to quickly get the StoreManager object for a test, as in the example bellow:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $objectManager->get(\Magento\Store\Model\StoreManagerInterface::class);
Attention! If you want to use the StoreManager inside a block class and the block is extended from \Magento\Framework\View\Element\Template, then StoreManager is available for you out of the box through protected property $this->_storeManager.
Example:
<?php
namespace \MyCompany\ExampleModule\Block;
class Example extends \Magento\Framework\View\Element\Template
{
public function getCurrentStoreId()
{
/* Get Current Store ID */
return $this->_storeManager->getStore()->getId(); } }
Except for the current store ID, code, name and website ID, URL, you need to know how to get URLs in Magento .phtml file.