Render Column for Widget Grid Column (Sales Order Select Customer Grid )
-
17-02-2021 - |
문제
I need to render email address for all customer while creating new order from admin. Adding renderer class for other grids is simple, But how to add renderer class when creating column using Magento\Backend\Block\Widget\Grid\Column
class.
Below is the code of adding email column to grid (vendor/magento/module-customer/view/adminhtml/ui_component/customer_listing.xml)
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.customer.grid.columnSet.email" as="email">
<arguments>
<argument name="header" xsi:type="string" translate="true">Email</argument>
<argument name="index" xsi:type="string">email</argument>
</arguments></block>
I have tried adding "renderer" argument but didn't worked.
<argument name="renderer" xsi:type="string">{{render class path }}</argument>
How can we add renderer class here?
해결책
Was able to fix it .
Below is the code.
file : sales_order_create_customer_block.xml
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="adminhtml.customer.grid.columnSet.email">
<arguments>
<argument name="renderer" xsi:type="string">Vendor\Module\Block\Grid\Renderer\Email</argument>
</arguments>
</referenceBlock>
</body>
</page>
Renderer CLass
namespace Vendor\Module\Block\Grid\Renderer;
class Email extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer
{
/**
* Renders grid column
*
* @param \Magento\Framework\DataObject $row
* @return string
*/
public function render(\Magento\Framework\DataObject $row)
{
return '<span>'.$row->getEmail().'</span>';
}
}
제휴하지 않습니다 magento.stackexchange