Я хочу создать ссылку на пользовательскую сетку в моем администраторе с предопределенными фильтрами. Сетка сделана с помощью UI Listing Component (XML) и имеет столбец, form_id
который настроен так:
<column name="form_id">
<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">Form id</item>
</item>
</argument>
</column>
Сетка работает просто отлично. Я могу применить фильтр, и все работает хорошо. Сетка хорошо обновляется с помощью запроса XHR.
Однако ... Я хочу, чтобы в какой-то момент значение фильтров было предопределено. Например, я хочу иметь возможность открывать сетку, когда она фильтруется по ID = 3.
Поэтому я уже попытался загрузить страницу с теми же параметрами URL, что и XHR-запрос, а также просто добавил только обязательные параметры:
?namespace=form_response_listing&search=&filters[placeholder]=true&filters[form_id][from]=3&filters[form_id][to]=3&paging[pageSize]=20&paging[current]=1
Также как и:
?filters[form_id][from]=3&filters[form_id][to]=3
Оба безуспешно. Итак, как я могу предварительно заполнить фильтры, используя URL?
Редактировать:
Я не уверен, является ли это дубликатом другого вопроса (как упомянуто в комментариях ниже). В моем случае я использую виртуальный тип в качестве коллекции для моей сетки:
<virtualType name="Vendor\Module\Model\ResourceModel\Response\Grid\Collection"
type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
<arguments>
<argument name="mainTable" xsi:type="string">vendormodule_form_response</argument>
<argument name="resourceModel" xsi:type="string">Vendor\Module\Model\ResourceModel\Response</argument>
</arguments>
</virtualType>
Таким образом, дело не в том, что у меня есть физический класс Block для моего виджета сетки, он просто создан с помощью компонента UI, в котором перечислены XML.
Тем не менее, я все равно проверю, поможет ли упомянутый вопрос моему варианту использования.
prepareColumns
метода.