Как извлечь изображение из базы данных и отобразить его для внешнего интерфейса в magento 2
Я создал пользовательскую серверную сетку и форму пользовательского интерфейса , чтобы добавить слайдер изображения, и он хорошо работает в бэкэнде. В бэкэнде я извлек изображение, получив URL-адрес мультимедиа.В интерфейсе извлеките имя изображения и из базы данных, а также URL-адрес носителя.Но мне нужно получить изображение и показать его в начале. Пожалуйста, предложите мне решение.
Вот что я получил, используя ниже коды.
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>
1
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