Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Yii网格视图中重写私有JS方法_Javascript_Jquery_Yii - Fatal编程技术网

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调用中

插件文件的完整源代码可在以下位置查看:

以下是我找到的解决方案:

解决方案

  • 目前,我正在使用ScriptMap,如下所示:

  • 我还可以选择使用ajaxSend全局事件将我自己的数据添加到每个发送的请求中:

  • 表明可以通过重写
    $.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]'
    ));