Javascript 在Yii网格视图中重写私有JS方法
我想在Javascript 在Yii网格视图中重写私有JS方法,javascript,jquery,yii,Javascript,Jquery,Yii,我想在YiiGridView插件的yii\framework\zii\widgets\assets\gridview\jquery.YiiGridView.js中扩展一个函数,将数据添加到插件发出的ajax调用中 插件文件的完整源代码可在以下位置查看: 以下是我找到的解决方案: 解决方案 目前,我正在使用ScriptMap,如下所示: 我还可以选择使用ajaxSend全局事件将我自己的数据添加到每个发送的请求中: 表明可以通过重写$.fn.yiiGridView.update函数来实现此功能的
YiiGridView
插件的yii\framework\zii\widgets\assets\gridview\jquery.YiiGridView.js
中扩展一个函数,将数据添加到插件发出的ajax调用中
插件文件的完整源代码可在以下位置查看:
以下是我找到的解决方案:
解决方案
$.fn.yiiGridView.update
函数来实现此功能的其他方法不适用,因为从Yii 1.1.9开始,此类方法已被弃用
$.ajax(options);
致:
不必求助于方法1、2或3。如果这是不可能的,我想确认一下
插件文件中的行号270位于:IMHO,可接受的选项为1或3
1:
+使用核心功能
+只有一个脚本请求
-你可以打碎东西
3:
+安全(没有损坏任何东西)
-附加请求
-需要在每个文件中连接
我会选择选项1
将其添加到此处,仅供将来参考 从问题中可以明显看出,我试图覆盖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调用中,从而消除重写的需要。我想知道如何将指定行更改为我提到的行,或者是否可以实现这一点,而无需使用解决方案1,2或3.我从来没有使用过这些选项中的任何一个,但由于我没有明确说明我的意图,我想说这是一个很好的答案。有关我如何实现我的目标的详细信息,请查看我对这个问题的回答。
$this->widget('bootstrap.widgets.TbGridView', array(
'type' => 'striped',
'id' => 'grid-id',
'selectableRows' => 0,
'dataProvider' => $model->search(),
'template' => "{items}\n{pager}",
'filterSelector' => 'input[name^=filter]'
));