Xui komponen ui Anda harus ditambahkan ini:
<column name="image" class="Your\Modulename\Ui\Component\Listing\Column\Thumbnail">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/thumbnail</item>
<item name="sortable" xsi:type="boolean">false</item>
<item name="altField" xsi:type="string">title</item>
<item name="has_preview" xsi:type="string">1</item>
<item name="label" xsi:type="string" translate="true">Thumbnail</item>
</item>
</argument>
</column>
..dan kemudian di \ Modulename \ Ui \ Component \ Listing \ Column \ Thumbnail.php Anda sesuatu yang mirip dengan ini:
<?php
namespace Your\Modulename\Ui\Component\Listing\Column;
use Magento\Catalog\Helper\Image;
use Magento\Framework\UrlInterface;
use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Store\Model\StoreManagerInterface;
use Magento\Ui\Component\Listing\Columns\Column;
class Thumbnail extends Column
{
const ALT_FIELD = 'title';
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $storeManager;
/**
* @param ContextInterface $context
* @param UiComponentFactory $uiComponentFactory
* @param Image $imageHelper
* @param UrlInterface $urlBuilder
* @param StoreManagerInterface $storeManager
* @param array $components
* @param array $data
*/
public function __construct(
ContextInterface $context,
UiComponentFactory $uiComponentFactory,
Image $imageHelper,
UrlInterface $urlBuilder,
StoreManagerInterface $storeManager,
array $components = [],
array $data = []
) {
$this->storeManager = $storeManager;
$this->imageHelper = $imageHelper;
$this->urlBuilder = $urlBuilder;
parent::__construct($context, $uiComponentFactory, $components, $data);
}
/**
* Prepare Data Source
*
* @param array $dataSource
* @return array
*/
public function prepareDataSource(array $dataSource)
{
if(isset($dataSource['data']['items'])) {
$fieldName = $this->getData('name');
foreach($dataSource['data']['items'] as & $item) {
$url = '';
if($item[$fieldName] != '') {
$url = $this->storeManager->getStore()->getBaseUrl(
\Magento\Framework\UrlInterface::URL_TYPE_MEDIA
).'pathtoyourimage/'.$item[$fieldName];
}
$item[$fieldName . '_src'] = $url;
$item[$fieldName . '_alt'] = $this->getAlt($item) ?: '';
$item[$fieldName . '_link'] = $this->urlBuilder->getUrl(
'your_module/yourentity/edit',
['yourentity_id' => $item['yourentity_id']]
);
$item[$fieldName . '_orig_src'] = $url;
}
}
return $dataSource;
}
/**
* @param array $row
*
* @return null|string
*/
protected function getAlt($row)
{
$altField = $this->getData('config/altField') ?: self::ALT_FIELD;
return isset($row[$altField]) ? $row[$altField] : null;
}
}
Saya harap itu membantu!
if($item[$fieldName] != '')
keif($item['url'] != '')
dan'pathtoyourimage/'.$item[$fieldName]
ke'pathtoyourimage/'.$item['url']
. Saya$fieldName
'mengembalikan' gambar namun bidang db saya disebut 'url'. Sisanya$item[$fieldName . '***']
ditinggalkan di tempat.Dalam mendefinisikan grid.php Anda seperti di bawah ini
Buat di
Image.php
bawahdan rekatkan kode di bawah ini
sumber
Cukup tambahkan tag ini di
ui_component
file tata letak Andadan buat file baru ini yang telah kami tetapkan di
ui_component
kolom kamiDalam
prepareDataSource
fungsinya Anda akan mendapatkan setiap objek kolom.Semoga ini bisa membantu Anda.
sumber
Akhirnya, saya punya solusi untuk pertanyaan saya. Saya telah menambahkan kolom kotak dengan nama blok penyaji sebagai parameter.
Kemudian saya telah menambahkan membuat blok renderer seperti di bawah ini:
Saya harap ini akan membantu Anda.
sumber