Значение настраиваемого столбца сетки 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(массив $Источник данных) получен нормально, но когда я применяю условие и возвращаю $источник данных - , он не отображается в столбце сетки. Может ли кто-нибудь разобраться в этой проблеме?

Author: Verdu, 2018-03-16

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>
 3
Author: Prince Patel, 2018-03-16 08:17:17