そこには検索条件がありません。通常、次のようにします。
$model = new PackagingMetric('search');
$model->attributes = $_POST['PackagingMetric']; // this would be the model associated with the search form
$model->search();
ユーザー入力から値を取得するコードは何も表示されないため、何らかの方法で検索フォームを使用する必要があります。もちろん、モデルにデフォルト値を設定することもできますが、そうではないと思います。
編集:
使用している拡張機能のソースコードをもう少し調べました。エクスポートボタンは、実際には<a href=''></a>
、Excelシートを出力することになっているページに移動する標準のリンクのようです。ただし、実際のフィルターデータはそのページに送信されないため、サーバー側でこれらのフィルターを適用する方法はありません。
これは拡張機能の意図された動作であるため、それを解決するためのエレガントな方法はありませんが、厄介な方法があります。
最初のオプションは、拡張機能を自分で微調整することですが、これにより、将来のバージョンとの互換性が失われます。もう1つの方法は、Javascriptを使用して、必要な場所にデータを送信することです。グリッドビューを表示しているビューファイルで、ウィジェットをform
要素でラップするか、ActiveForm
すべての検証を無効にしてでラップする必要があります。次に、次のJavascriptコードをページのどこかに配置する必要があります。
var $excelForm = $( '#your_form_id' );
$( '.summary a', $excelForm ).click( function() {
$excelForm.attr( 'action', this.href ).submit();
return false;
});
これにより、エクスポートリンクで指定されたアドレスにフォームが送信されます。フォームはウィジェットをラップするため、結果をフィルタリングする入力要素が含まれるため、サーバーでユーザーが入力したフィルターにアクセスできます。私が最初に投稿したコードを使用して、そこからデータを取得できます。
注:div
エクスポートボタンを含むのデフォルトのクラス名を使用しています。これは.summary
です。別のクラスを使用している場合は、それぞれのJSコードを変更する必要があります。