デフォルトでは、GridViewは?sort=-status
のようなURLからソートパラメータを取得します。つまり、desc
をソートすると、status
となります。あなたの質問から、次のようにあなたは、このように、いくつかの追加データのフィルタリングを実行する必要があり、あなたのビューのいくつかのフォームを持っている。もしそうなら
<form method="POST">
<input type="text" name="filter">
<button type="submit" name="action" value="search">Search</button>
</form>
は、その後、あなただけ、たとえば、フォームアクションのURLにパラメータを並べ替え保持する必要があります
<form method="POST" action="<?= \Yii::$app->request->getUrl() ?>">
またはあなたが使用している場合のActiveForm:
を
$form = ActiveForm::begin([
'method' => 'POST',
'action' => \Yii::$app->request->getUrl(),
]);
あなたはクッキーを使用する場合は、手動であなたのコントローラとAPの属性を並べ替えを取得する必要dataProvider(またはsorter
の設定)に渡すクエリにそれらを追加します。
描画GridViewでフィルタリングを追加するもう1つの一般的な方法 - filterModel
プロパティに注意してください。
フォームdocumentation:ユーザが入力したフィルタのデータを保持します
モデル。このプロパティーが に設定されている場合、グリッド表示は列ベースのフィルタリングを有効にします。デフォルトでは、各データの 列には、ユーザーが に入力してデータをフィルタリングできるテキストフィールドが上部に表示されます。フィルタリングのための入力フィールドを表示するためには、列が そののYii \グリッド\のDataColumnを持たなければならないこと:: $プロパティセットと 属性を属性
ノートは、現在の$ filterModelのシナリオや でアクティブにする必要があります持っていますyii \ grid \ DataColumn :: $ filterは、入力 フィールドのHTMLコードとして設定されています。
このプロパティが設定されていない(null)場合、フィルタリング機能は が無効です。