Как извлечь изображение из базы данных и отобразить его для внешнего интерфейса в magento 2


Я создал пользовательскую серверную сетку и форму пользовательского интерфейса , чтобы добавить слайдер изображения, и он хорошо работает в бэкэнде. В бэкэнде я извлек изображение, получив URL-адрес мультимедиа.В интерфейсе извлеките имя изображения и из базы данных, а также URL-адрес носителя.Но мне нужно получить изображение и показать его в начале. Пожалуйста, предложите мне решение.

Вот что я получил, используя ниже коды.

enter image description here

Block\ImageSlider.php

    <?php

namespace OX\HomeSlider\Block;

use Magento\Framework\View\Element\Template\Context;
use OX\HomeSlider\Model\Post;
use Magento\Framework\View\Element\Template;

//use \Magento\Store\Model\StoreManagerInterface

class ImageSlider extends Template
{

    protected $storeManager;

    public function __construct(Context $context, Post $model, \Magento\Store\Model\StoreManagerInterface $storeManager)
    {
        $this->model = $model;
        $this->storeManager = $storeManager;
        parent::__construct($context);
    }

    public function getCollection()
    {
        $collection = $this->model->getCollection();
        return $collection;
    }

     public function getMediaUrl()
    {
        $mediaUrl = $this->storeManager->getStore()
                ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

        return $mediaUrl;
    }

DataProvider.php

<?php

namespace namspace\HomeSlider\Model;

use namspace\HomeSlider\Model\ResourceModel\Post\CollectionFactory;
use Magento\Store\Model\StoreManagerInterface;

class DataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider
{

    protected $collection;
    protected $_loadedData;
    protected $_storeManager;

    public function __construct(
    $name, $primaryFieldName, $requestFieldName, CollectionFactory $postCollectionFactory, StoreManagerInterface $storeManager, array $meta = [], array $data = []
    )
    {
        $this->collection = $postCollectionFactory->create();
        $this->_storeManager = $storeManager;
        parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
    }

    public function getData()
    {

        if (isset($this->_loadedData)) {
            return $this->_loadedData;
        }
        $items = $this->collection->getItems();
        foreach ($items as $item) {
            $this->_loadedData[$item->getId()] = $item->getData();

            if ($item->getImage()) {
            // replace icon to your custom field name
            $m['image'][0]['name'] = $item->getImage();
            $m['image'][0]['url'] = $this->getMediaUrl().'homeslider/'.$item->getImage();

            $fullData = $this->_loadedData;
            $this->_loadedData[$item->getId()] = array_merge($fullData[$item->getId()], $m);
            }



        }

        return $this->_loadedData;
    }

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

        return $mediaUrl;
    }

}

Просмотр/интерфейс/шаблоны/Imageslider.phtml

<h1><?php $collections = $this->getCollection(); ?></h1>

<?php 
    foreach($collections as $collection){
        echo $collection->getImage();
    }
?>

<h1><?php echo $am = $this->getMediaUrl().'homeslider/'.$collection->getImage(); ?></h1>
Author: Jaisa, 2017-11-17

1 answers

Попробуйте обновить код следующим образом

    <h1><?php $collections = $this->getCollection(); ?></h1>

<?php 
    foreach($collections as $collection){
        echo $collection->getImage();
        $path = $this->getMediaUrl().'homeslider/'.$collection->getImage();
        $img = '<img src='.$path. '/ >';
        echo $img;
    }
?>
 1
Author: Padhiyar Gaurang, 2017-11-18 06:13:34