回答:
$ 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(); ?>
Object Managerの使用は、Magentoのコーディング標準に従って推奨されていません。テンプレートファイルでは、次のコードを使用してメディアURLを取得できます。
$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()
Magentoの推奨事項に従って、Webサイトのドキュメントルートは、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;
}
phtmlで関数getMediaUrl()
を呼び出します
<?php echo $block->getMediaUrl(); ?>
$ this-> _ storeManager-> getStore()-> getBaseUrl(\ Magento \ Framework \ UrlInterface :: URL_TYPE_MEDIA);
このコードを確認してください。メディアパスを提供します。