Jak zdobyć ścieżkę medialną w Magento 2.1. Próbowałem wiele opcji, ale to nie działa?
Chcę wyświetlić obraz w interfejsie wewnątrz pliku .phtml.
Jak zdobyć ścieżkę medialną w Magento 2.1. Próbowałem wiele opcji, ale to nie działa?
Chcę wyświetlić obraz w interfejsie wewnątrz pliku .phtml.
Odpowiedzi:
można uzyskać ścieżkę nośnika przez $ object metody
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
echo $objectManager->get('Magento\Store\Model\StoreManagerInterface')
->getStore()
->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
metoda fabryk
<?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;
}
}
........
?>
w pliku phtml
<?php echo $block->getMediaUrl(); ?>
Nie zaleca się używania Object Managera zgodnie ze standardami kodowania Magento. W pliku szablonu możemy uzyskać adres URL multimediów za pomocą następującego kodu:
$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()
Zgodnie z zaleceniem Magento katalog główny witryny powinien znajdować się poza pub
katalogiem podczas programowania i powinien znajdować się w pub
katalogu podczas przenoszenia do produkcji.
Dlatego nie możemy na stałe zakodować pub
katalogu podczas pobierania multimedialnego adresu URL w plikach szablonów. Powyższy kod da ci poprawny URL mediów niezależnie od lokalizacji katalogu głównego dokumentu.
Uzyskaj ścieżkę multimediów według objectManager
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
echo $objectManager->get('Magento\Store\Model\StoreManagerInterface')
->getStore()
->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
Uzyskaj ścieżkę mediów przez Dependency Injection
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;
}
Teraz wywołaj funkcję getMediaUrl()
w phtml
<?php echo $block->getMediaUrl(); ?>
$ this -> _ storeManager-> getStore () -> getBaseUrl (\ Magento \ Framework \ UrlInterface :: URL_TYPE_MEDIA);
Sprawdź ten kod. Da ci ścieżkę medialną.