Magento 2.1 Медіа-шлях у .phtml-файл


9

Як пройти шлях до медіа у Magento 2.1. Я спробував багато варіантів, але він не працює?

Я хочу відобразити зображення у фронтальному файлі .phtml.


Чи можете ви показати нам, що ви намагалися до цього часу і які були пов'язані з цим результати?
Жульєн Лашал

Відповіді:


11

ви можете отримати шлях до медіа з допомогою $ об'єктного методу

$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

Використання диспетчера об'єктів не обмежується відповідно до стандартів кодування Magento. У файлі шаблону ми можемо отримати медіа-URL, використовуючи наступний код:

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

Відповідно до рекомендації Magento, корінь документа на вашому веб-сайті повинен бути поза pubкаталогом під час розробки, і він повинен бути всередині pubкаталогу під час переміщення у виробництво.

Отже, ми не можемо жорстко кодувати pubкаталог, отримуючи медіа-URL у файлах шаблонів. Вищенаведений код надасть вам правильну медіа-URL незалежно від вашого кореневого місцезнаходження документа.


1
+1 Думати про додавання 20 рядків коду для диспетчера об’єктів звучить жахливо просто врахувати.
Мохаммед Джораїд

7

Отримайте медіа-контур по 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;
}

Тепер функція виклику getMediaUrl()у phtml

<?php echo $block->getMediaUrl(); ?>

0

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

Перевірте цей код. Це дасть вам медіа-шлях.


2
Це не працює у файлі .phtml, оскільки властивість _storeManager захищено
simonthesorcerer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.