.phtml文件中的Magento 2.1媒体路径


Answers:


11

您可以通过$ object方法 获取媒体路径

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

工厂方法

<?php
    namespace Namespace\Modulename\Block;
    use Magento\Framework\ObjectManagerInterface;

    class Banners extends Template
    {

        protected $objectManager;
        public function __construct( 
            ....... 
            ObjectManagerInterface $objectManager
                       ...) {

                    ...........
                    $this->objectManager = $objectManager;

                    ...............
        }
        public function getMediaUrl(){

            $media_dir = $this->objectManager->get('Magento\Store\Model\StoreManagerInterface')
                ->getStore()
                ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

            return $media_dir;
        }
    }
    ........
?>

phtml文件中

<?php echo $block->getMediaUrl(); ?>

11

根据Magento的编码标准,不鼓励使用Object Manager。在模板文件中,我们可以使用以下代码获取媒体URL:

$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()

根据Magento的建议,网站的文档根pub目录在开发过程中应位于目录外部,而在pub生产环境中应位于目录内部。

因此,pub当在模板文件中获取媒体URL时,我们无法对目录进行硬编码。上面的代码将为您提供正确的媒体URL,而不管您的文档根目录位置如何。


1
+1考虑为对象管理器添加20行代码听起来很可怕,这是可以考虑的。
Mohammed Joraid '19

7

通过objectManager获取媒体路径

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

通过依赖注入获取媒体路径

protected $_storeManager;

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

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

现在getMediaUrl()phtml中调用函数

<?php echo $block->getMediaUrl(); ?>

0

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

请检查此代码。它将为您提供媒体路径。


2
这在.phtml文件中不起作用,因为_storeManager属性受到保护
simonthesorcerer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.