Как получить базовый URL Magento 2?


В Magento 1 Mage::getBaseUrl();, но в Magento 2 я должен передать ответственный тип объекта класса в конструкторе.

Я понятия не имею, какой класс я должен пройти?

Author: Rafael Corrêa Gomes, 2015-10-02

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 в блок

 130
Author: Amit Bera, 2019-07-09 14:24:21

Просто используйте эту команду, если вы используете класс, который расширяет \Magento\Framework\View\Element\Template.

$this->getBaseUrl()

Если нет, вы можете использовать это:

$this->_storeManager->getStore()->getBaseUrl()

Или, если вы используете его в шаблоне PHTML, используйте:

$block->getBaseUrl()
 53
Author: Rafael Corrêa Gomes, 2020-09-17 14:39:46

В Magneto2: Это способ получить Url-ссылку в файле PHTML:

echo $this->getUrl('about-us')

Я надеюсь, что это сработает для вас

 15
Author: Chandra Prakash Gupta, 2018-07-19 09:08:33

Введите менеджера магазина и просто получите базовый URL-адрес

public $_storeManager;
  public function __construct(
      \Magento\Store\Model\StoreManagerInterface $storeManager,
       .....
    ) {
       ...
  $this->_storeManager=$storeManager;
    }


$this->_storeManager->getStore()->getBaseUrl();

Примечание: не создавайте диспетчер объектов, всегда вводите

 7
Author: Surendra Kumar Ahir, 2017-02-07 18:11:03

Если вы просто хотите получить URL-адрес из корневого каталога вашей установки Magento, вы можете просто использовать getURL. Он наследуется от класса AbstractBlock (Magento\Framework\Представление\Элемент\Абстрактный блок), поэтому вы можете использовать его в любом из ваших блоков. Вот пример

$this->getUrl('pub/media/video/', ['_secure' => $this->getRequest()->isSecure()]).$fileName

Первый параметр - это путь, который вы хотите, а второй задает параметр _secure, если пользователь просматривает по протоколу https. Вы можете добавить в путь, связав определенное имя файла с вызовом getURL, или вы могли бы добавьте его в первый параметр. Путь указан относительно корневого каталога вашей установки Magento.

 6
Author: Nathan Toombs, 2015-10-02 03:30:21

Хорошо, если это стабильная версия Magento 2.0.0.CE, и любой "контекстный" тип объекта уже загружен в класс блоков, например Magento\Backend\Block\Widget\Context, тогда просто вызовите функцию getStoreManager()->getStore()->getBaseUrl(), как показано ниже:

$context->getStoreManager()->getStore()->getBaseUrl()

Внутри конструктора также можно передавать аргументы, такие как \Magento\Framework\UrlInterface::URL_TYPE_MEDIA внутри этой функции getBaseUrl().

Надеюсь, это поможет.

 3
Author: Vicky Dev, 2015-12-09 06:41:12

Правильный способ получить носитель в PHTML:

$block->getViewFileUrl('images/myimage.png');
 2
Author: Arvind07, 2016-06-09 05:57:23

Просто: <?php $block->getBaseUrl() ?>

 2
Author: PЯINCƏ, 2018-02-01 12:26:53

В вашем корне 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();
 1
Author: Jitendra Mohanta, 2016-07-15 13:50:46

В файле класса блоков добавьте следующую функцию:

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>')
 1
Author: Nahid, 2016-08-10 04:17:41

Вы можете получить базовый URL Magento2, используя это:

$this->_storeManager->getStore()->getBaseUrl()
 0
Author: Pratik Kamani, 2017-02-08 04:42:52

В magento 2.

Если вы хотите получить базовый URL-адрес, вы можете использовать приведенный ниже код:

$this->_storeManager->getStore()->getBaseUrl()

Используя ObjectManager, вы можете использовать следующий код

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$storeManager = $objectManager>get('\Magento\Store\Model\StoreManagerInterface');

$storeManager->getStore()->getBaseUrl();
 0
Author: simya sreejith, 2018-02-02 11:49:56

Вот подробное руководство, которое я нашел, чтобы получить базовый URL-адрес и другие в Magento2. http://www.webmull.com/magento-2-getbase-url/

public function getBaseUrl()
{
    return $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}
 -2
Author: Gaurav Jain, 2015-10-02 14:51:35