Ścieżka multimediów Magento 2.1 w pliku .phtml


9

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.


Czy możesz nam pokazać, co próbowałeś do tej pory i jakie były związane z tym wyniki?
Julien Lachal,

Odpowiedzi:


11

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

11

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 pubkatalogiem podczas programowania i powinien znajdować się w pubkatalogu podczas przenoszenia do produkcji.

Dlatego nie możemy na stałe zakodować pubkatalogu 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.


1
+1 Myślenie o dodaniu 20 linii kodu dla Object Managera brzmi okropnie.
Mohammed Joraid,

7

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

0

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

Sprawdź ten kod. Da ci ścieżkę medialną.


2
Nie działa to w pliku .phtml, ponieważ właściwość _storeManager jest chroniona
simonthesorcerer
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.