In this blog, both methods are demonstrated, using Dependency Injection and using ObjectManager
Using Dependency Injection
Here is the sample code. It has been used in a block class but you may use it in any class you want. We will be using three classes:
\Magento\Store\Model\StoreManagerInterface
\Magento\Framework\Filesystem\DirectoryList
and\Magento\Framework\UrlInterface
as follows:
<?php namespace Excellence\MagentoBlog\Block; class DataBlock extends \Magento\Framework\View\Element\Template { protected $_storeManager; protected $_urlInterface; protected $_dir; public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\Filesystem\DirectoryList $dir, \Magento\Framework\UrlInterface $urlInterface, array $data = [] ) { $this->_storeManager = $storeManager; $this->_dir = $dir; $this->_urlInterface = $urlInterface; parent::__construct($context, $data); } /** * This function prints all of the required data using: * \Magento\Store\Model\StoreManagerInterface */ public function getStoreManagerData() { echo $this->_storeManager->getStore()->getId() . '<br />'; /**#@+ Standard Function Call: $this->_storeManager->getStore()->getBaseUrl(Url type); * Possible URL types const URL_TYPE_LINK = 'link'; const URL_TYPE_DIRECT_LINK = 'direct_link'; const URL_TYPE_WEB = 'web'; const URL_TYPE_MEDIA = 'media'; const URL_TYPE_STATIC = 'static'; const URL_TYPE_JS = 'js'; */ // by default: URL_TYPE_LINK is returned echo $this->_storeManager->getStore()->getBaseUrl() . '<br />'; echo $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB) . '<br />'; echo $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_DIRECT_LINK) . '<br />'; echo $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA) . '<br />'; echo $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_STATIC) . '<br />'; /* To get custom URL based on url key */ echo $this->_storeManager->getStore()->getUrl('url_key') . '<br />'; /* To get Current URL */ echo $this->_storeManager->getStore()->getCurrentUrl(false) . '<br />'; echo $this->_storeManager->getStore()->getBaseMediaDir() . '<br />'; echo $this->_storeManager->getStore()->getBaseStaticDir() . '<br />'; } /** * This function prints all of the required data using: * \Magento\Framework\UrlInterface */ public function getUrlInterfaceData() { echo $this->_urlInterface->getCurrentUrl() . '<br />'; echo $this->_urlInterface->getUrl() . '<br />'; /* To get custom URL based on url key */ echo $this->_urlInterface->getUrl('url_key') . '<br />'; echo $this->_urlInterface->getBaseUrl() . '<br />'; } /** * This function prints all of the directory paths using: * \Magento\Framework\Filesystem\DirectoryList */ public function getDirectoryPaths() { echo $this->_dir->getRoot()."<br>"; // Output: /var/www/html/myproject echo $this->_dir->getPath('media')."<br>"; // Output: /var/www/html/myproject/pub/media echo $this->_dir->getPath('pub')."<br>"; // Output: /var/www/html/myproject/pub echo $this->_dir->getPath('static')."<br>"; // Output: /var/www/html/myproject/pub/static echo $this->_dir->getPath('var')."<br>"; // Output: /var/www/html/myproject/var echo $this->_dir->getPath('app')."<br>"; // Output: /var/www/html/myproject/app echo $this->_dir->getPath('etc')."<br>"; // Output: /var/www/html/myproject/app/etc echo $this->_dir->getPath('lib_internal')."<br>"; // Output: /var/www/html/myproject/lib/internal echo $this->_dir->getPath('lib_web')."<br>"; // Output: /var/www/html/myproject/lib/web echo $this->_dir->getPath('tmp')."<br>"; // Output: /var/www/html/myproject/var/tmp echo $this->_dir->getPath('cache')."<br>"; // Output: /var/www/html/myproject/var/cache echo $this->_dir->getPath('log')."<br>"; // Output: /var/www/html/myproject/var/log echo $this->_dir->getPath('session')."<br>"; // Output: /var/www/html/myproject/var/session echo $this->_dir->getPath('setup')."<br>"; // Output: /var/www/html/myproject/setup/src echo $this->_dir->getPath('di')."<br>"; // Output: /var/www/html/myproject/var/di echo $this->_dir->getPath('upload')."<br>"; // Output: /var/www/html/myproject/pub/media/upload echo $this->_dir->getPath('generation')."<br>"; // Output: /var/www/html/myproject/var/generation echo $this->_dir->getPath('view_preprocessed')."<br>"; // Output: /var/www/html/myproject/var/view_preprocessed echo $this->_dir->getPath('composer_home')."<br>"; // Output: /var/www/html/myproject/var/composer_home echo $this->_dir->getPath('html')."<br>"; // Output: /var/www/html/myproject/var/view_preprocessed/html } }
You can see more functions in following classes:
/var/www/html/myproject/vendor/magento/module-store/Model/Store.php
/var/www/html/myproject/vendor/magento/framework/Url.php
Using ObjectManager
Well, this approach is never recommended as you know that using ObjectManager is never recommended in Magento 2. Find more about this here.
Though, we will see some of the methods to get work done:
<?php $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $appState = $objectManager->get('\Magento\Framework\App\State'); $appState->setAreaCode('frontend'); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $store = $storeManager->getStore(); echo $store->getUrl('product/33'); echo '<br>'; echo $store->getCurrentUrl(); echo '<br>'; echo $store->getBaseUrl(); echo '<br>'; echo $store->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB); echo '<br>'; echo $store->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA); echo '<br>'; ?>
The post Magento 2 – How to Get Base URL, Media URL, Current URL, Base Path, Media Path appeared first on Excellence Technologies Magento Blog | Magento Tutorials | Magento Developer.