ম্যাজেন্টো 2 বেস ইউআরএল কিভাবে পাবেন?


56

ম্যাজেন্টো 1 তে Mage::getBaseUrl();, তবে ম্যাজেন্টো 2-তে আমাকে কনস্ট্রাক্টরের দায়িত্বশীল ক্লাস অবজেক্ট টাইপ পাস করতে হবে।

আমার কোন ক্লাস পাস করতে হবে তা আমার ধারণা নেই?

উত্তর:


114

ম্যাজেন্টো 2 এ।

আপনি যদি বেস url পেতে চান তবে আপনি নীচের কোডটি চেষ্টা করতে পারেন:

/**
* @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

অবজেক্ট ম্যানেজার ব্যবহার করে

বেস ইউরাল:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
$storeManager->getStore()->getBaseUrl();

Index.php ছাড়াই বেস url Ur

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
$storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB);

মিডিয়া বেস ইউআরএল পাওয়ার জন্য:

$this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

লিঙ্ক ইউআরএল পাওয়ার জন্য:

$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। আপনি যদি পিটিএইচটিএমএলে বেস ইউআরএলটি চান তবে StoreManagerInterfaceব্লকে ইনজেকশন দিন


3
আমি সরাসরি উত্তরটির মত ব্যবহারকারীর ব্যবহারকে নিরুৎসাহিত করব like এই উত্তরটিতে উল্লিখিত মত আপনার স্টক ম্যানেজারটিকে আপনার ব্লক ক্লাসে ইনজেকশনের মাধ্যমে এটি করা উচিত।
7ochem

@ 7 ওচেম, এটি বিকাশকারী কলের উপর নির্ভরশীল :)
অমিত বেরা

2
সত্য, আমি এখনও বিকাশকারীদের এটি করতে অত্যন্ত নিরুৎসাহিত করব
7:55

43

কেবলমাত্র এই আদেশটি ব্যবহার করুন আপনার সাথে বর্ধিত একটি বর্গ ব্যবহার করছেন \Magento\Framework\View\Element\Template

$this->getBaseUrl()

যদি তা না হয় তবে এটি ব্যবহার করুন:

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

বা যদি আপনি এটি কোনও পিএইচটিএমএল টেম্পলেট ব্যবহার করে থাকেন:

$block->getBaseUrl()

সংক্ষিপ্ত এবং দক্ষ
আশিশ হীরা

ভাল লাগল, ধন্যবাদ আপনি কি জানেন যে এটি পালানোর দরকার আছে কিনা? ম্যাজেন্টো এখনও এটি যাচাই করেছে বলে মনে হয় না।
বেন ক্রুক

@ বেন-স্পেস 48 এর স্কেপের দরকার নেই, যেমন ম্যাজেন্টো ১।
রাফায়েল কোরিয়া গোমেস

1
এই উত্তরটি সত্যিই আরও কিছু প্রসঙ্গ ব্যবহার করতে পারে। আপনি অভিমানী করছি যে, তারা একটি বর্গ যে প্রসারিত মধ্যে রয়েছে \Magento\Framework\View\Element\Template। তবে ওপি-র প্রশ্নে তিনি বর্তমানে কোথা থেকে কোডিং করছেন সে বিষয়ে কোনও উল্লেখ করা হয়নি। এই ধরনের মডেল, সাহায্যকারী, কন্ট্রোলার, ইত্যাদি
ড্যারেন Felton

পিএইচটিএমএল টেমপ্লেটে আপনার should এই-> গেটবেসআরল () - এর পরিবর্তে $ block-> getBaseUrl () ব্যবহার করা উচিত
ড্যানিয়েল

14

ম্যাগনেটো 2 এ: এইচটিএমএল ফাইলটিতে url লিঙ্কটি পাওয়ার উপায়:

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

আমি আশা করি এটি আপনার পক্ষে কাজ করবে


6

আপনি যদি কেবলমাত্র নিজের ম্যাজেন্টো ইনস্টলের রুট ডিরেক্টরি থেকে কোনও URL পেতে চান তবে আপনি কেবল getUrl ব্যবহার করতে পারেন। এটি অ্যাবস্ট্রাকব্লক শ্রেণীর উত্তরাধিকার সূত্রে প্রাপ্ত (ম্যাজেন্টো me ফ্রেমওয়ার্ক \ দেখুন \ উপাদান \ অ্যাবস্ট্রাকব্লক) যাতে আপনি এটিকে আপনার যে কোনও ব্লক ব্যবহার করতে সক্ষম হন। এখানে একটি উদাহরণ

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

প্রথম প্যারামিটারটি আপনি যে পথটি চান সেটি হ'ল এবং ব্যবহারকারী যদি https- তে ব্রাউজ করে তবে দ্বিতীয়টি _ সুরক্ষার বিকল্পটি সেট করে। আপনি getUrl কলটিতে একটি নির্দিষ্ট ফাইলের নাম সংযুক্ত করে পাথে যুক্ত করতে পারেন বা এটি প্রথম প্যারামিটারে যুক্ত করতে পারেন। পাথটি আপনার ম্যাজেন্টো ইনস্টলের মূল ডিরেক্টরি সম্পর্কিত।


1
কেন $ এটি-> getUrl ('পাব / মিডিয়া / ক্যাটালগ / পণ্য') এটি ক্যাটালগ ডিরেক্টরি এবং পণ্য ডিরেক্টরি উপেক্ষা করে আমার পথ দেয়?
চিরাগ ডোডিয়া

6

ইনজেক্ট স্টোর ম্যানেজার এবং কেবল বেস url পান

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


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

দ্রষ্টব্য: অবজেক্ট ম্যানেজারটি সর্বদা ইনজেকশন তৈরি করবেন না


3

ওয়েল যদি এটি ম্যাজেন্টো 2.0.0 হয়। সিই স্থিতিশীল সংস্করণ এবং যে কোনও "প্রসঙ্গ" ধরণের অবজেক্টটি ইতিমধ্যে ব্লক ক্লাসে লোড করা আছে Magento\Backend\Block\Widget\Contextতারপরে কেবল getStoreManager()->getStore()->getBaseUrl()নীচের মত ফাংশন কল করুন :

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

কনস্ট্রাক্টরের ভিতরেও আপনি \Magento\Framework\UrlInterface::URL_TYPE_MEDIAএই getBaseUrl()ফাংশনটির মতো যুক্তিগুলি পাস করতে পারেন ।

আশাকরি এটা সাহায্য করবে.


2

পিএইচটিএমএলে মিডিয়া পাওয়ার সঠিক উপায় হ'ল:

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


1

আপনার ম্যাজেন্টো মূলের মধ্যে টেস্ট.এফপি ফাইল তৈরি করুন।

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

ম্যাজেন্টো 2 এ।

আপনি যদি বেস url পেতে চান তবে নীচের কোডটি ব্যবহার করতে পারেন:

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

অবজেক্টম্যানেজার ব্যবহার করে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন

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

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

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

-2

এখানে বেস টিউটোরিয়ালটি Magento2 এ বেস url এবং অন্যান্য পাই to http://www.webmull.com/magento-2-getbase-url/

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

এই পোস্টে বর্ণনা করা হয়েছে যে ম্যাজেন্টো 1.x তে ইউআরএল কীভাবে পাওয়া যায়, ইউআরএল পাওয়ার জন্য ম্যাজেন্টো 2 যুক্তিতে আলাদা different
joni জোন্স

2
না, ম্যাজেন্টো 2 এরও বর্ণনা রয়েছে, তবে অমিত বেরার আগের উত্তরটি এখানে আরও বিশদ এবং কেবল একটি লিঙ্ক নয়, সঠিক হিসাবে গ্রহণ করা উচিত।
ফায়ারবিয়ার 10
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.