Magento 2 आधार URL कैसे प्राप्त करें?


56

Magento 1 में Mage::getBaseUrl();, लेकिन Magento 2 में मुझे कंस्ट्रक्टर में जिम्मेदार क्लास ऑब्जेक्ट टाइप करना होगा।

मेरे पास यह विचार नहीं है कि मुझे किस कक्षा में पास होना है?

जवाबों:


114

Magento 2 में।

यदि आप बेस यूआरएल प्राप्त करना चाहते हैं, तो आप नीचे दिए गए कोड की कोशिश कर सकते हैं:

/**
* @var \Magento\Store\Model\StoreManagerInterface $this->_storeManager
*/

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

जहां का $this->_storeManagerउदाहरण\Magento\Store\Model\StoreManagerInterface

यह उपरोक्त कोड आपको परिणाम देगा

http://www.example.com ( यदि एसईओ फिर से सक्षम है )

और http://www.example.com/index.php ( यदि एसईओ फिर से लिखना सक्षम नहीं है )

अगर आप बिना आधार 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();

Base 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 आपको इंजेक्शन लगाना चाहिए\Magento\Store\Model\StoreManagerInterface $storeManager

ब्लॉक क्लास में __construct( )समारोह में

बिलकुल इसके जैसा :

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

अपडेट किया गया:

इसके अलावा, आप प्राप्त कर सकते हैं आधार यूआरएल सीधे पर 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 को अपने ब्लॉक वर्ग में इंजेक्ट करके ऐसा करना चाहिए, जैसे कि इस उत्तर में भी उल्लेख किया गया है।
7ochem

@ 7ochem, डेवलपर के फोन पर :) निर्भर करता है
अमित बेरा

2
सच है, मैं अभी भी डेवलपर्स को ऐसा करने के लिए बहुत हतोत्साहित
करूंगा

43

बस इस कमांड का उपयोग करें आपके साथ एक वर्ग का उपयोग कर रहे हैं जो फैली हुई है \Magento\Framework\View\Element\Template

$this->getBaseUrl()

यदि नहीं, तो यह प्रयोग करें:

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

या यदि आप इसे PHTML टेम्पलेट उपयोग में उपयोग कर रहे हैं:

$block->getBaseUrl()

लघु और कुशल
आशीष हिरा

अच्छा लगा, धन्यवाद। क्या आप जानते हैं कि इससे बचने की जरूरत है या नहीं? Magento के लिए अभी तक यह सत्यापित नहीं लगता है।
बेन क्रुक

@ बेन-स्पेस48 को मैजेंटो जैसे स्केप की जरूरत नहीं है।
राफेल कोरपा गोम्स

1
यह उत्तर वास्तव में कुछ और संदर्भ का उपयोग कर सकता है। आप मान रहे हैं कि वे एक वर्ग के भीतर हैं जो फैली हुई हैं \Magento\Framework\View\Element\Template। हालाँकि, ओपी के सवाल का कोई संदर्भ नहीं है कि वह वर्तमान में कहाँ से कोडिंग कर रहा है। जैसे कि मॉडल, हेल्पर, कंट्रोलर आदि
डैरेन फेल्टन

एक phtml टेम्पलेट में आपको $ block-> getBaseUrl () के बजाय $ this-> getBaseUrl () का उपयोग करना चाहिए
Daniel Kratohvil

14

Magneto2 में: यह PHTML फ़ाइल में यूआरएल लिंक प्राप्त करने का तरीका है:

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

मुझे उम्मीद है कि यह आपके लिए काम करेगा


6

यदि आप बस अपने Magento इंस्टाल के रूट डायरेक्टरी से URL प्राप्त करना चाहते हैं, तो आप बस getUrl का उपयोग कर सकते हैं। यह AbstractBlock वर्ग (Magento \ फ्रेमवर्क \ View \ Element \ AbstractBlock) से विरासत में मिला है, इसलिए आप इसे अपने किसी भी ब्लॉक का उपयोग करने में सक्षम हैं। यहाँ एक उदाहरण है

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

पहला पैरामीटर वह मार्ग है जो आप चाहते हैं, और दूसरा _secure विकल्प सेट करता है यदि उपयोगकर्ता https पर ब्राउज़ कर रहा है। आप getUrl कॉल पर किसी विशिष्ट फ़ाइलनाम को संक्षिप्त करके पथ में जोड़ सकते हैं या आप इसे पहले पैरामीटर में जोड़ सकते हैं। पथ आपके Magento की स्थापना के रूट डायरेक्टरी के सापेक्ष है।


1
$ यह क्यों-> getUrl ('पब / मीडिया / कैटलॉग / प्रोडक्ट') यह मुझे कैटलॉग डायरेक्टरी और प्रोडक्ट डायरेक्टरी को नजरअंदाज करने का रास्ता देता है?
चिराग़ दोडिया

6

स्टोर मैनेजर को इंजेक्ट करें और बस आधार यूआरएल प्राप्त करें

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\Contextकॉल करें getStoreManager()->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

Magento 2 में।

यदि आप बेस यूआरएल प्राप्त करना चाहते हैं, तो आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

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

ObjectManager का उपयोग करके, आप निम्न कोड का उपयोग कर सकते हैं

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

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

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

-2

यहाँ Magento2 में बेस यूआरएल और अन्य लोगों को प्राप्त करने के लिए विस्तृत ट्यूटोरियल पाया गया है। 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 प्राप्त करने के लिए तर्क अलग हैं।
जोनी 28

2
नहीं, मैजेंटो 2 के लिए भी वर्णन है, लेकिन अमित बेरा द्वारा पिछला उत्तर यहां अधिक विस्तृत है और केवल एक लिंक नहीं है, इसे सही के रूप में स्वीकार किया जाना चाहिए।
फायरबियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.