Magento 2 기본 URL을 얻는 방법?


56

Magento 1 Mage::getBaseUrl();에서 Magento 2에서는 생성자에 책임있는 클래스 객체 유형을 전달해야합니다.

어떤 수업을 통과해야할지 모르겠습니다.

답변:


114

마 젠토 2에서.

Base 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();

index.php가없는 기본 URL

$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 당신은 주사를 호출한다\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 . phtml에서 기본 URL을 원하면 StoreManagerInterface블록에 주입하십시오 .


3
이 답변에서 언급 한 것처럼 객체 관리자를 직접 사용하지 않는 것이 좋습니다. 이 답변에서 언급 한 것처럼 StoreManager를 Block 클래스에 주입 하여이 작업을 수행해야합니다.
7ochem

@ 7ochem, 그것은 개발자의 전화에 따라 다릅니다 :)
Amit Bera

2
사실, 나는 여전히 개발자들에게 그렇게하지 말 것을 강력히 권합니다.
7ochem

43

확장하는 클래스를 사용하는 경우이 명령을 사용하십시오 \Magento\Framework\View\Element\Template.

$this->getBaseUrl()

그렇지 않은 경우 다음을 사용하십시오.

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

또는 PHTML 템플릿에서 사용하는 경우 다음을 사용하십시오.

$block->getBaseUrl()

짧고 효율적인
Asish Hira

고마워요 탈출이 필요한지 아십니까? 마 젠토는 아직 그것을 확인하지 않은 것 같습니다.
벤 크룩

@ Ben-Space48 Magento 1과 같은 풍경이 필요 없습니다.
Rafael Corrêa Gomes

1
이 답변은 실제로 더 많은 컨텍스트를 사용할 수 있습니다. 당신은 그들이 확장하는 클래스 내에 있다고 가정하고 \Magento\Framework\View\Element\Template있습니다. 그러나 OP의 질문은 그가 현재 코딩하고있는 곳을 언급하지 않습니다. 모델, 도우미, 컨트롤러 등
Darren Felton

phtml 템플릿에서는 $ this-> getBaseUrl () 대신 $ block-> getBaseUrl ()을 사용해야합니다.
Daniel

14

Magneto2에서 : 이것은 PHTML 파일에서 URL 링크를 얻는 방법입니다 :

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

나는 그것이 당신을 위해 작동하기를 바랍니다


6

Magento 설치 루트 디렉토리에서 URL을 가져 오려면 getUrl을 사용하면됩니다. AbstractBlock 클래스 (Magento \ Framework \ View \ Element \ AbstractBlock)에서 상속되므로 모든 블록을 사용할 수 있습니다. 여기에 예가 있습니다

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

첫 번째 매개 변수는 원하는 경로이고 두 번째 매개 변수는 사용자가 https를 탐색하는 경우 _secure 옵션을 설정합니다. getUrl 호출에 특정 파일 이름을 연결하여 경로에 추가하거나 첫 번째 매개 변수에 추가 할 수 있습니다. 경로는 Magento 설치의 루트 디렉토리를 기준으로합니다.


1
왜 $ this-> getUrl ( 'pub / media / catalog / product') 카탈로그 디렉토리로 이동하고 제품 디렉토리를 무시하는 경로를 제공합니까?
chirag dodia

6

상점 관리자를 주입하고 단순히 기본 URL을 얻으십시오

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


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

참고 : 항상 주입하는 객체 관리자를 만들지 마십시오


3

Magento 2.0.0이라면 좋습니다. CE 안정 버전 및 모든 "컨텍스트"유형의 객체는 이미 블록 클래스에로드 된 Magento\Backend\Block\Widget\ContextgetStoreManager()->getStore()->getBaseUrl()아래와 같이 함수를 호출 합니다.

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

생성자 \Magento\Framework\UrlInterface::URL_TYPE_MEDIA내부 에서도이 getBaseUrl()함수 내부 와 같은 인수를 전달할 수 있습니다 .

도움이 되었기를 바랍니다.


2

PHTML로 미디어를 얻는 올바른 방법은 다음과 같습니다.

$block->getViewFileUrl('images/myimage.png');


1

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

블록 클래스 파일에서 다음 기능을 추가하십시오.

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>')

0

다음을 사용하여 Magento2 Base URL을 얻을 수 있습니다.

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

0

마 젠토 2에서.

Base url을 얻으려면 아래 코드를 사용할 수 있습니다.

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

objectManager를 사용하면 다음 코드를 사용할 수 있습니다

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

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

$storeManager->getStore()->getBaseUrl();

-2

다음은 Magento2의 기본 URL과 다른 URL을 얻는 방법에 대한 자세한 자습서입니다. http://www.webmull.com/magento-2-getbase-url/

public function getBaseUrl()
{
    return $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}

이 게시물은 magento 1.x에서 URL을 얻는 방법을 설명합니다 .magento 2 논리에서 URL을 얻는 방법이 다릅니다.
joni jones

2
아니오, magento 2에 대한 설명도 있지만, Amit Bera의 이전 답변은 링크가 아니라 훨씬 더 상세하며 올바른 것으로 받아 들여 져야합니다.
FireBear
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.