Magento 2 UI Grid- Filter Collection According to The Custom Parameter Available in The URL
Running short of time? Get PDF of the blog in your mail.
In Magento 2 UI grid, sometimes when data-provider is passed in the XML file and we have to add the filter of store switcher, it doesn’t works,because when Magento call the collection of grid via ajax it use another controller(default -> mui/index/render) and it won’t have the parameter same as the previous URL, so to pass these parameters to new URL we can follow the below mentioned steps.
First add custom key, a filter_url_params section in the data-provider UI grid, as shown:
<dataSource name="driver_listing_data_source"> <argument name="dataProvider" xsi:type="configurableObject"> <argument name="class" xsi:type="string">MageNative\MobiDelivery\Ui\DataProvider\DriverDataProvider</argument> <argument name="name" xsi:type="string">driver_listing_data_source</argument> <argument name="primaryFieldName" xsi:type="string">id</argument> <argument name="requestFieldName" xsi:type="string">id</argument> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item> <item name="update_url" xsi:type="url" path="mui/index/render"/> <item name="storageConfig" xsi:type="array"> <item name="indexField" xsi:type="string">id</item> <item name="dataScope" xsi:type="string">store_id</item> </item> <item name="filter_url_params" xsi:type="array"> <item name="store" xsi:type="string">*</item> </item> </item> </argument> </argument> </dataSource>
In the second step, add the ‘$’ sign, this->prepares updateUrl(); in the __construct(…).
After that add the first add custom key below the filter_url_params section in the data-provider UI grid, as shown
/** * @return void */ protected function prepareUpdateUrl() { if (!isset($this->data['config']['filter_url_params'])) { return; } foreach ($this->data['config']['filter_url_params'] as $paramName => $paramValue) { if ('*' == $paramValue) { $paramValue = $this->request->getParam($paramName); } if ($paramValue) { $this->data['config']['update_url'] = sprintf( '%s%s/%s/', $this->data['config']['update_url'], $paramName, $paramValue ); $this->addFilter( $this->filterBuilder->setField($paramName)->setValue($paramValue)->setConditionType('eq')->create() ); } } }
Conclusion
Now in the end, as a conclusion, this process will help you to add another filter like store-switcher from outside the grid filters.
You might also like-
- Implementation and Working Process of GraphQl In Magento 2.3
- Magento 2 add a custom multi-select filter in UI grid
- Create and Add Custom Attribute To Product View Page
- Declarative Schema in Magento 2.3