Как отобразить ссылку URL в столбце сетки magento
Я хочу добавить URL-адрес в сетку magento.Если я нажму на эту ссылку, то попаду на страницу желаний. Похожий на этот образ
Я делаю столбцы в сетке вот так.
<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>
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-адреса.