4

メディアパスの 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

10 に答える 10

7

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

$this->getUrl('pub/media')
于 2016-09-01T08:40:51.210 に答える
4

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

$block->getViewFileUrl('images/myimage.png');
于 2016-06-09T05:57:47.227 に答える
3
//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);

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

于 2016-08-08T12:28:49.187 に答える
0

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/';
于 2016-09-01T12:53:41.010 に答える