要在Magento 2.4.5后台产品展示列表中添加自定义列,请按照以下步骤进行操作:
1. 创建一个自定义模块。
2. 在自定义模块的 "view/adminhtml/ui_component/product_listing.xml" 文件中添加以下代码:
<?xml version="1.0"?> <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <columns name="product_columns" class="Magento\Catalog\Ui\Component\Listing\Columns"> <column name="custom_column" class="[Vendor]\[Module]\Ui\Component\Listing\Column\CustomColumn"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="sortOrder" xsi:type="number">999</item> <item name="filter" xsi:type="string">text</item> <item name="label" xsi:type="string" translate="true">Custom Column</item> </item> </argument> </column> </columns> </listing>
其中,`[Vendor]\[Module]` 是你的自定义模块名称。`CustomColumn` 是自定列的类名。
3. 创建自定义列的类 `[Vendor]\[Module]\Ui\Component\Listing\Column\CustomColumn`。该类需要扩展 `Magento\Ui\Component\Listing\Columns\Column` 类,并实现 `_prepareDataSource()` 方法。例如:
<?php
namespace [Vendor]\[Module]\Ui\Component\Listing\Column;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Ui\Component\Listing\Columns\Column;
class CustomColumn extends Column
{
protected $productRepository;
public function __construct(
ContextInterface $context,
UiComponentFactory $uiComponentFactory,
ProductRepositoryInterface $productRepository,
array $components = [],
array $data = []
) {
$this->productRepository = $productRepository;
parent::__construct($context, $uiComponentFactory, $components, $data);
}
public function prepareDataSource(array $dataSource)
{
if (isset($dataSource['data']['items'])) {
foreach ($dataSource['data']['items'] as &$item) {
$product = $this->productRepository->getById($item['entity_id']);
$item[$this->getData('name')] = $product->getCustomAttribute('your_attribute_code')->getValue();
}
}
return $dataSource;
}
}
4. 清除 Magento 的 cache。
现在,你应该在后台产品列表中看到了一个名为 "Custom Column" 的列,该列显示了每个产品的 "your_attribute_code" 属性值。
标签:自定义,Column,列表,productRepository,Magento2.4,Magento,dataSource,Listing From: https://www.cnblogs.com/Onionlog/p/17218677.html