Magento 2.2.5 – Pass Multiple Parameters in Admin Grid Action URL

gridmagento-2.2.5parameterurl

In Magento 2.2.5, I am sending the id in the url now, But, I want send multiple parameters in the admin grid action url. I created admin grid using layout Blocks. Not used ui component.

How to achieve this.

Here is my code:

<block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
                    <arguments>
                        <argument name="id" xsi:type="string">action</argument>
                        <argument name="header" xsi:type="string" translate="true">Action</argument>
                        <argument name="type" xsi:type="string">action</argument>
                        <argument name="getter" xsi:type="string">getId</argument>
                        <argument name="filter" xsi:type="boolean">false</argument>
                        <argument name="sortable" xsi:type="boolean">false</argument>
                        <argument name="index" xsi:type="string">weblog</argument>
                        <argument name="is_system" xsi:type="boolean">true</argument>
                        <argument name="actions" xsi:type="array">
                            <item name="view_action" xsi:type="array">
                                <item name="caption" xsi:type="string" translate="true">Assign</item>
                                <item name="url" xsi:type="array">
                                    <item name="base" xsi:type="string">apptha_customergroup/deal/assign</item>
                                </item>
                                <item name="field" xsi:type="string">id</item>
                            </item>
                        </argument>
                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
                    </arguments>
                </block>

Best Answer

I used Renderer to achieve this.

Please find my code here.

Layout File:

<block class="Magento\Backend\Block\Widget\Grid\Column" as="action">
                    <arguments>
                        <argument name="id" xsi:type="string">action</argument>
                        <argument name="header" xsi:type="string" translate="true">Action</argument>
                        <argument name="type" xsi:type="string">action</argument>
                        <argument name="getter" xsi:type="string">getId</argument>
                        <argument name="filter" xsi:type="boolean">false</argument>
                        <argument name="sortable" xsi:type="boolean">false</argument>
                        <argument name="index" xsi:type="string">entity_id</argument>
                        <argument name="is_system" xsi:type="boolean">true</argument>
                        <argument name="renderer" xsi:type="string">Apptha\Deal\Block\Adminhtml\Deal\Grid\Column\Renderer\Assignaction</argument>
                        <argument name="header_css_class" xsi:type="string">col-actions</argument>
                        <argument name="column_css_class" xsi:type="string">col-actions</argument>
                    </arguments>
                </block>

Block file (Apptha\Deal\Block\Adminhtml\Deal\Grid\Column\Renderer\Assignaction.php):

<?php
namespace Apptha\Deal\Block\Adminhtml\Deal\Grid\Column\Renderer;
use \Magento\Framework\View\Element\Template;
use \Magento\Framework\View\Element\Template\Context;
use \Magento\Store\Model\StoreManagerInterface;
use \Apptha\Deal\Helper\Data;

class Assignaction extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Text
{

    protected $_helper;
    protected $urlBuilder;

    public function __construct(\Magento\Framework\UrlInterface $urlBuilder) 
    {
        $this->urlBuilder = $urlBuilder;
    }

    public function render(\Magento\Framework\DataObject $row)
    {
        /** @var \Magento\Integration\Model\Integration $row */
        $merchantId = $row->getData("merchant_id");
        $manageDealId = $row->getData("entity_id");
        $actionUrl = $this->urlBuilder->getUrl("deals/deal/responsedetails/id/$manageDealId/mid/$merchantId" );
        return "<a href=".$actionUrl.">Details</a>";
    }
}
Related Topic