我在phtml文件中添加了一个自定义图像并运行命令php bin / magento setup:static-content:deploy但它仍未显示 . 此命令也需要很长时间才能完成 .
如果有人想使用ui_component添加图像列,请按以下说明操作:
在uiComponent xml中添加图像列:
<column name="imagefile" class="{Namespace}\{ModuleName}\Ui\Component\Listing \Column\Thumbnail"> <argument name="data" xsi:type="array"> <item name="js_config" xsi:type="array"> <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/thumbnail</item> </item> <item name="config" xsi:type="array"> <item name="sortable" xsi:type="boolean">true</item> <item name="altField" xsi:type="string">imagefile</item> <item name="has_preview" xsi:type="string">1</item> <item name="dataType" xsi:type="string">text</item> <item name="sorting" xsi:type="string">asc</item> <item name="align" xsi:type="string">left</item> <item name="laem>bel" xsi:type="string" translate="true">Thumbnail</item> </item> </argument> </column>
在给定路径创建列文件,即
<?php namespace {NameSpace}\{ModuleName}\Ui\Component\Listing\Column; use Magento\Framework\View\Element\UiComponentFactory; use Magento\Framework\View\Element\UiComponent\ContextInterface; use {NameSpace}\{ModuleName}\Model\News\Image as KtplImage; class Thumbnail extends \Magento\Ui\Component\Listing\Columns\Column { const NAME = 'imagefile'; const ALT_FIELD = 'imagefile'; public function __construct( ContextInterface $context, UiComponentFactory $uiComponentFactory, KtplImage $imageFactory, \Magento\Framework\UrlInterface $urlBuilder, array $components = [], array $data = [] ) { parent::__construct($context, $uiComponentFactory, $components, $data); $this->imageFactory = $imageFactory; $this->urlBuilder = $urlBuilder; } /** * Prepare Data Source * * @param array $dataSource * @return void */ public function prepareDataSource(array & $dataSource) { if (isset($dataSource['data']['items'])) { $fieldName = $this->getData('name'); foreach ($dataSource['data']['items'] as & $item) { $itemIndex = new \Magento\Framework\Object($item); $item[$fieldName . '_src'] = $this->imageFactory->getBaseUrl().$itemIndex->getImagefile(); $item[$fieldName . '_orig_src'] = $this->imageFactory->getBaseUrl().$itemIndex->getImagefile(); } } } } use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Backend\App\Action; protected $_fileUploaderFactory; public function __construct( \Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory, Action\Context $context ) { $this->_fileUploaderFactory = $fileUploaderFactory; parent::__construct($context); } public function execute(){ $uploader = $this->_fileUploaderFactory->create(['fileId' => 'image']); $uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png']); $uploader->setAllowRenameFiles(false); $uploader->setFilesDispersion(false); $path = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA) ->getAbsolutePath('images/'); $uploader->save($path); }
1 回答
如果有人想使用ui_component添加图像列,请按以下说明操作:
在uiComponent xml中添加图像列:
在给定路径创建列文件,即