Как получить базовый URL Magento 2?
В Magento 1 Mage::getBaseUrl();
, но в Magento 2 я должен передать ответственный тип объекта класса в конструкторе.
Я понятия не имею, какой класс я должен пройти?
13 answers
В magento 2.
Если вы хотите получить базовый URL-адрес, то можете попробовать следующий код:
/** * @var \Magento\Store\Model\StoreManagerInterface $this->_storeManager */ $this->_storeManager->getStore()->getBaseUrl();
Где $this->_storeManager
экземпляр \Magento\Store\Model\StoreManagerInterface
Этот приведенный выше код даст вам результат
Http://www.example.com ( Если включена функция Seo-переписывания)
И http://www.example.com/index.php ( Если Seo-переписывание не включено)
Если вам нужна база URL без index.php
$this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB)
Смотрите подробнее на magento2 get base url and media url and static url
Использование Диспетчера объектов
Базовый Url-адрес:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl();
Базовый Url без index.php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
Для получения базового URL-адреса мультимедиа:
$this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
для получения ссылки url-адрес:
$this->_storeManager->getStore() ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_LINK);
Редактировать
Для получения $this->_storeManager
Вам следует позвонить inject \Magento\Store\Model\StoreManagerInterface $storeManager
В __construct( )
функция в классе блоков
точно так же, как :
public $_storeManager; public function __construct( \Magento\Store\Model\StoreManagerInterface $storeManager, ..... ) { ... $this->_storeManager=$storeManager; }
Обновлено:
Кроме того, вы можете получить базовый URL-адрес непосредственно в phtml
с помощью прямого вызова object Manager
.
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface'); $storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);
Примечание: Directly call of object manager is not good idea
. Если ты хочешь базовый URL-адрес в phtml, затем введите StoreManagerInterface
в блок
Просто используйте эту команду, если вы используете класс, который расширяет \Magento\Framework\View\Element\Template
.
$this->getBaseUrl()
Если нет, вы можете использовать это:
$this->_storeManager->getStore()->getBaseUrl()
Или, если вы используете его в шаблоне PHTML, используйте:
$block->getBaseUrl()
В Magneto2: Это способ получить Url-ссылку в файле PHTML:
echo $this->getUrl('about-us')
Я надеюсь, что это сработает для вас
Введите менеджера магазина и просто получите базовый URL-адрес
public $_storeManager;
public function __construct(
\Magento\Store\Model\StoreManagerInterface $storeManager,
.....
) {
...
$this->_storeManager=$storeManager;
}
$this->_storeManager->getStore()->getBaseUrl();
Примечание: не создавайте диспетчер объектов, всегда вводите
Если вы просто хотите получить URL-адрес из корневого каталога вашей установки Magento, вы можете просто использовать getURL. Он наследуется от класса AbstractBlock (Magento\Framework\Представление\Элемент\Абстрактный блок), поэтому вы можете использовать его в любом из ваших блоков. Вот пример
$this->getUrl('pub/media/video/', ['_secure' => $this->getRequest()->isSecure()]).$fileName
Первый параметр - это путь, который вы хотите, а второй задает параметр _secure, если пользователь просматривает по протоколу https. Вы можете добавить в путь, связав определенное имя файла с вызовом getURL, или вы могли бы добавьте его в первый параметр. Путь указан относительно корневого каталога вашей установки Magento.
Хорошо, если это стабильная версия Magento 2.0.0.CE, и любой "контекстный" тип объекта уже загружен в класс блоков, например Magento\Backend\Block\Widget\Context
, тогда просто вызовите функцию getStoreManager()->getStore()->getBaseUrl()
, как показано ниже:
$context->getStoreManager()->getStore()->getBaseUrl()
Внутри конструктора также можно передавать аргументы, такие как \Magento\Framework\UrlInterface::URL_TYPE_MEDIA
внутри этой функции getBaseUrl()
.
Надеюсь, это поможет.
Правильный способ получить носитель в PHTML:
$block->getViewFileUrl('images/myimage.png');
Просто: <?php $block->getBaseUrl() ?>
В вашем корне magento создайте Test.php файл.
use Magento\Framework\App\Bootstrap;
include('app/bootstrap.php');
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$storeManager = $objectManager->get('Magento\Store\Model\StoreManagerInterface');
$baseUrl= $storeManager->getStore()->getBaseUrl();
В файле класса блоков добавьте следующую функцию:
public function getImageUrl($link_url = '')
{
if(!empty($link_url))
{
$media_url = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
return $media_url.'/'.$link_url;
}
else
{
return '#';
}
}
И вызовите это из вашего файла шаблона .phtml следующим образом:
$block->getImageUrl('<relative image path>')
Вы можете получить базовый URL Magento2, используя это:
$this->_storeManager->getStore()->getBaseUrl()
В magento 2.
Если вы хотите получить базовый URL-адрес, вы можете использовать приведенный ниже код:
$this->_storeManager->getStore()->getBaseUrl()
Используя ObjectManager, вы можете использовать следующий код
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $objectManager>get('\Magento\Store\Model\StoreManagerInterface');
$storeManager->getStore()->getBaseUrl();
Вот подробное руководство, которое я нашел, чтобы получить базовый URL-адрес и другие в Magento2. http://www.webmull.com/magento-2-getbase-url/
public function getBaseUrl()
{
return $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}