.phtmlファイル内のMagento 2.1メディアパス


9

Magento 2.1でメディアパスを取得する方法。多くのオプションを試しましたが、うまくいきませんか?

.phtmlファイル内のフロントエンドに画像を表示したい。


これまでに試したことと、それに関連する結果を教えていただけますか?
Julien Lachal 16

回答:


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

Object Managerの使用は、Magentoのコーディング標準に従って推奨されていません。テンプレートファイルでは、次のコードを使用してメディアURLを取得できます。

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

Magentoの推奨事項に従って、Webサイトのドキュメントルートは、pub開発中はディレクトリの外側pubにあり、本番環境に移動するときはディレクトリの内側にある必要があります。

したがってpub、テンプレートファイルでメディアURLを取得しているときに、ディレクトリをハードコーディングすることはできません。上記のコードは、ドキュメントのルートの場所に関係なく、正しいメディアURLを提供します。


1
+1オブジェクトマネージャに20行のコードを追加することを考えると、検討するだけでも恐ろしいように思えます。
Mohammed Joraid

6

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(); ?>

0

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

このコードを確認してください。メディアパスを提供します。


2
_storeManagerプロパティが保護されているため、これは.phtmlファイルでは機能しません
simonthesorcerer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.