Значение настраиваемого столбца сетки Magento 2 в списке пользовательского интерфейса
Я перешел по этой ссылке Как отобразить значения Да/нет в сетке администратора (Magento2)? чтобы получить динамическое пользовательское значение столбца, где поле столбца в сетке было
App/code/Vendor/Theme/view/adminhtml/ui_component/your_ui_grid.xml
<column name="instock" class="Vendor\Module\Ui\Component\Listing\Column\InStock">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="sortOrder" xsi:type="number">60</item>
<item name="label" translate="true" xsi:type="string">InStock</item>
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item>
<item name="dataType" xsi:type="string">select</item>
</item>
</argument>
Файл в пользовательском интерфейсе:
App/code/Vendor/Module/Ui/Component/Listing/Column/InStock.php
<?php
namespace Vendor\Module\Ui\Component\Listing\Column;
use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Ui\Component\Listing\Columns\Column;
class Status extends Column
{
public function __construct(
ContextInterface $context,
UiComponentFactory $uiComponentFactory,
array $components = [],
array $data = []
) {
parent::__construct($context, $uiComponentFactory, $components, $data);
}
public function prepareDataSource(array $dataSource)
{
if (isset($dataSource['data']['items'])) {
foreach ($dataSource['data']['items'] as &$items) {
// $items['instock'] is column name
if ($items['instock'] == 1) {
$items['instock'] = 'Yes';
} else {
$items['instock'] = 'No';
}
}
}
return $dataSource;
}
}
Значение столбца в prepareDataSource(массив $Источник данных) получен нормально, но когда я применяю условие и возвращаю $источник данных - , он не отображается в столбце сетки. Может ли кто-нибудь разобраться в этой проблеме?
1 answers
Удалить аргумент component
из
App/code/Vendor/Theme/view/adminhtml/ui_component/your_ui_grid.xml
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item>
Если вы возвращаете данные HTML, то передайте аргумент bodyTmpl
<item name="bodyTmpl" xsi:type="string">ui/grid/cells/html</item>
Финал your_ui_grid.xml
<column name="instock" class="Vendor\Module\Ui\Component\Listing\Column\InStock">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="sortOrder" xsi:type="number">60</item>
<item name="label" translate="true" xsi:type="string">InStock</item>
<item name="dataType" xsi:type="string">select</item>
<item name="bodyTmpl" xsi:type="string">ui/grid/cells/html</item>
</item>
</argument>