0

YiiGridViewプラグイン atの関数を拡張しyii\framework\zii\widgets\assets\gridview\jquery.yiigridview.jsて、プラグインによって行われた ajax 呼び出しにデータを追加したいと思います。

プラグイン ファイルの完全なソースは、 https ://code.google.com/p/yii/source/browse/trunk/framework/zii/widgets/assets/gridview/jquery.yiigridview.js で表示できます。

私が見つけた解決策は次のとおりです。

ソリューション

  1. 現時点では、ここに示されているように ScriptMap を使用しています: http://www.yiiframework.com/forum/index.php/topic/31530-override-jqueryyiigridviewjs/

  2. また、ajaxSend グローバル イベントを使用して、送信されたすべてのリクエストに独自のデータを追加することもできます: http://api.jquery.com/ajaxSend/

  3. 関数をオーバーライドすることによってそのような機能を実現できることを示す他のメソッドは、そのようなメソッドが推奨さ$.fn.yiiGridView.updateれないため、適用されません。Yii 1.1.9

質問

私が達成したいのは変更です:

$.ajax(options);

に:

options = $.extend({}, options, {data: myCustomData});
$.ajax(options);

方法1、2、または3に頼る必要はありません。これが不可能な場合は、その確認をお願いします。

プラグイン ファイルの行番号 270: https://code.google.com/p/yii/source/browse/trunk/framework/zii/widgets/assets/gridview/jquery.yiigridview.js#270

4

2 に答える 2

0

今後の参考のために、ここに追加します。

data質問から明らかなように、ajax 呼び出しでパラメーターをオーバーライドしようとしていました。

カスタム データ (この場合はフィルター) をdataオブジェクトに追加するには、これを行う必要がありました。

これを達成するためのより良い方法があります。コードをハックしてデータ オブジェクトを変更しようとするのではなく、グリッド構成オプションを使用して'filterSelector' => 'input[name^=filter]',カスタム フィルターを選択できます。

結果の構成配列は次のようになります。

$this->widget('bootstrap.widgets.TbGridView', array(
    'type' => 'striped',
    'id' => 'grid-id',
    'selectableRows' => 0,
    'dataProvider' => $model->search(),
    'template' => "{items}\n{pager}",
    'filterSelector' => 'input[name^=filter]'
));

このfilterSelectorオプションは、一致するフィールドのデータをすべての ajax 呼び出しに自動的に追加するため、オーバーライドする必要がなくなります。

于 2013-07-23T12:58:16.137 に答える