Как отобразить ссылку URL в столбце сетки magento


Я хочу добавить URL-адрес в сетку magento.Если я нажму на эту ссылку, то попаду на страницу желаний. Похожий на этот образenter image description here

Я делаю столбцы в сетке вот так.

<column name="product_name" class="Vendor\Module\Ui\Component\Listing\Column\Products\Product">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">textRange</item>

                <item name="label" xsi:type="string" translate="true">Product Name</item>
                <item name="sortOrder" xsi:type="number">10</item>
            </item>
        </argument>

    </column>

    <column name="sku" class="Vendor\Module\Ui\Component\Listing\Column\Products\Product">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">textRange</item>

                <item name="label" xsi:type="string" translate="true">SKU</item>
                <item name="sortOrder" xsi:type="number">20</item>
            </item>
        </argument>
    </column>
Author: Ashar Riaz, 2017-02-05

1 answers

Если вы используете компонент пользовательского интерфейса для построения этой сетки, вам нужно заменить определение столбца продукта чем-то вроде этого (для регулярного обновления макета xml):

<block class="Magento\Backend\Block\Widget\Grid\Column" as="score">
    <arguments>
        <argument name="header" xsi:type="string" translate="true">Product</argument>
        <argument name="index" xsi:type="string">product</argument>
        <argument name="type" xsi:type="string">string</argument>
        <argument name="renderer" xsi:type="string">Vendor\Module\Block\Adminhtml\Column\Renderer\Product</argument>
        <argument name="header_css_class" xsi:type="string">col-product</argument>
        <argument name="column_css_class" xsi:type="string">col-product</argument>
    </arguments>
</block>

И после этого вам нужно создать класс визуализации для этого столбца

Vendor\Module\Block\Adminhtml\Column\Renderer\Product

<?php

use \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer;

class Product extends AbstractRenderer {

    /**
     * Render link for product
     *
     * @param  \Magento\Framework\DataObject $row
     * @return string
     */
    public function render(\Magento\Framework\DataObject $row) {
        $value =  $row->getData($this->getColumn()->getIndex());
        $url = $this->getUrl('');
        $output = '<a href="' . $url . '">' . $value . '</a>';
        return $output;
    }
}

Это работает на Magento 2.1 и 2.1.2 (протестировано)

РЕДАКТИРОВАТЬ: Я видел, что вы используете папку ui_component внутри adminhtml, и теперь вам нужно будет изменить свой класс Vendor\Module\Ui\Component\Listing\Column\Products\Product и создать метод prepareDataSource() и измените источник данных, чтобы добавить ссылки

Взгляните на Magento\Продажи\Пользовательский интерфейс\Компонент\Список\Столбец\Действие просмотра и посмотрите, как реализована ссылка на просмотр в сетке заказов.

Надеюсь, это поможет вам создать собственные URL-адреса.

 0
Author: Miroslav Petroff, 2017-02-07 12:41:25