事前定義されたフィルターを使用して、管理者にカスタムグリッドへのリンクを作成したい。グリッドはUIリストコンポーネント(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でフィルターされたときにグリッドを開くことができます。
そのため、XHRリクエストと同じURLパラメーターを使用してページをロードし、必要なパラメーターのみを追加するだけで済みます。
?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クラスを持っているのではなく、XMLをリストするUIコンポーネントで純粋に作成されています。
それにもかかわらず、言及された質問が私のユースケースに役立つかどうかとにかくチェックします。
prepareColumns
メソッドではなくxmlファイルで構成されていました。