我想在YiiGridView
的{{1}}插件中扩展一个函数,将数据添加到插件发出的ajax调用中。
插件文件的完整源代码可在以下位置查看:https://code.google.com/p/yii/source/browse/trunk/framework/zii/widgets/assets/gridview/jquery.yiigridview.js
以下是我遇到的解决方案:
解决方案
目前,我正在使用ScriptMap,如下所示: http://www.yiiframework.com/forum/index.php/topic/31530-override-jqueryyiigridviewjs/
我也可以选择使用ajaxSend全局事件将自己的数据添加到每个发送的请求中:http://api.jquery.com/ajaxSend/
表示可以通过覆盖yii\framework\zii\widgets\assets\gridview\jquery.yiigridview.js
函数实现此类功能的其他方法不适用,因为从$.fn.yiiGridView.update
开始不推荐使用此类方法。
问题
我想要实现的是改变:
Yii 1.1.9
为:
$.ajax(options);
无需采用方法1,2或3.如果无法做到这一点,我想确认一下。
答案 0 :(得分:1)
恕我直言,可接受的选项是1或3
1:
+使用核心功能
+只有一个脚本请求
- 你可以打破一些东西
3:
+安全(没有破坏任何东西)
- 附加要求
- 需要连接每个文件
我会选择1号选项
答案 1 :(得分:0)
此处添加此内容仅供日后参考。
从问题中可以明显看出,我试图覆盖ajax调用中的data
参数。
我需要这样做才能将自定义数据附加到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
{{1}}选项会自动将匹配字段中的任何数据附加到每个ajax调用,从而无需覆盖。