如何在Magento 2.1中获取媒体路径。我尝试了很多选择,但是没有用?
我想在.phtml文件的前端显示图像。
您能告诉我们到目前为止您尝试过什么以及相关的结果吗?
—
朱利安·拉查
如何在Magento 2.1中获取媒体路径。我尝试了很多选择,但是没有用?
我想在.phtml文件的前端显示图像。
Answers:
您可以通过$ 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(); ?>
根据Magento的编码标准,不鼓励使用Object Manager。在模板文件中,我们可以使用以下代码获取媒体URL:
$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()
根据Magento的建议,网站的文档根pub
目录在开发过程中应位于目录外部,而在pub
生产环境中应位于目录内部。
因此,pub
当在模板文件中获取媒体URL时,我们无法对目录进行硬编码。上面的代码将为您提供正确的媒体URL,而不管您的文档根目录位置如何。
通过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(); ?>
$ this-> _ storeManager-> getStore()-> getBaseUrl(\ Magento \ Framework \ UrlInterface :: URL_TYPE_MEDIA);
请检查此代码。它将为您提供媒体路径。