web-dev-qa-db-ja.com

.phtmlファイルのMagento2メディアパス

メディアパスのURLを見つけるためにmagento2で多くのオプションを試しました

テンプレートでメディアパスのURLを見つけるにはどうすればよいですか。

私は試しました

$object_manager = Magento\Core\Model\ObjectManager::getInstance();
$dir = $object_manager->get('Magento\App\Dir');
$mediaUrl = $dir->getDir(\Magento\App\Dir::MEDIA);

しかし、エラークラスが見つかりません。ブロックファイルで関数を作成するための1つの解決策を検索して見つけましたが、デザインでメディアパスを使用したい場所がたくさんあります

前もって感謝します。

4
Mitul

これは、ブロックまたはテンプレート内からメディアパスを取得する方法です。

$this->getUrl('pub/media')
6
1984

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

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

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

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

3

PHTMLでメディアを取得する正しい方法は次のとおりです。

$block->getViewFileUrl('images/myimage.png');
3
Arvind Bhardwaj
//Case 1: $objectManager outside magento
use Magento\Framework\App\Bootstrap;    
include('your-path-to-/app/bootstrap.php');
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();


//Case 2: $objectManager inside magento
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$mediaDir = $objectManager->get('Magento\Framework\App\Filesystem\DirectoryList')->getPath('media');
$mediaUrl = $objectManager->get('Magento\Store\Model\StoreManagerInterface')->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);


// Case 3: Inside model
public function __construct(
\Magento\Framework\View\Element\Template\Context $context, 
\Magento\Framework\App\Filesystem\DirectoryList $directory_list, 
\Magento\Store\Model\StoreManagerInterface $url, 
array $data = []) {
    parent::__construct($context, $data);
    $this->directory_list = $directory_list;  
    $this->url = $url;  
}
$this->directory_list->getRoot();//root folder path
$this->directory_list->getPath('media');//media folder path
$this->url->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

それは私にとってはうまくいきました。

2
Ipsita Rout

StoreManagerInterfaceを使用して取得してみてください

use Magento\Store\Model\StoreManagerInterface;

protected $storeManager;

public function __construct(
    StoreManagerInterface $storeManager,
)
{
    $this->storeManager = $storeManager;
}

次に、を使用してメディアURLを取得します

$mediaUrl = $this->storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
0
swathi_sri

$baseurl=$block->getUrl();

Phtml内のbaseurlを返します。

0
Sreenath

以下のコードで試してみてください。

$object_manager = \Magento\Framework\App\ObjectManager::getInstance();
$dir = $object_manager->get('Magento\App\Dir');

$mediaUrl = $dir->getDir(\Magento\App\Dir::MEDIA);
0
hardik solanki

PHTMLファイルでメディアパスを取得するには、次の2つの方法があります。

最初の方法

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

セカンドウェイ

index.php

含まれています:

define('MAGENTO_ROOT', getcwd());

次のようなことができます。

$mediaPath = MAGENTO_ROOT.'/pub/media/';
0
Emizen Tech

ブロックにStoreManagerInterfaceを挿入します

namespace Altravista\Carousel\Block;
use Magento\Catalog\Block\Product\ImageBuilder;

class Product extends \Magento\Framework\View\Element\Template
{    
    public $_storeManager;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        array $data = []
    )
    {    
        $this->_storeManager = $storeManager;
        parent::__construct($context, $data);
    }


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

}

あなたのphtmlでブロックを呼び出します

$productBlock = $block->getLayout()->createBlock('Altravista\Carousel\Block\Product');

と方法

$imageUrl = $media_url. 'catalog/product' . $product->getImage();
0
Altravista

まあ、私の場合、これはうまくいきました:

<?php
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $storeManager = $objectManager->get('Magento\Store\Model\StoreManagerInterface');
    $store = $storeManager->getStore();
    $mediaUrl = $store->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
?>
0
Manish Joy