Search yii2搜索一个栅格视图会影响其他栅格视图

Search yii2搜索一个栅格视图会影响其他栅格视图,search,yii2,dataprovider,Search,Yii2,Dataprovider,我在索引页中有多个网格视图,每个网格视图(例如:挂起的记录网格视图、完成的记录网格视图、取消的记录网格视图等)都有相同的列(例如:名称、编号、位置等),每个都有自己的搜索/筛选行,每个网格视图都在调用Pjax进行搜索 在进行Pjax调用之前,一切都很好,但在某些情况下(我不知道确切情况),页面正在刷新,搜索将应用于所有网格视图(这就是问题所在) 请给我这个问题的解决办法 我以前的问题是,每个网格视图也有分页,当我单击一个网格视图的分页时,它也会影响另一个网格视图的分页,解决方案是,我使用了不同的

我在索引页中有多个网格视图,每个网格视图(例如:挂起的记录网格视图、完成的记录网格视图、取消的记录网格视图等)都有相同的列(例如:名称、编号、位置等),每个都有自己的搜索/筛选行,每个网格视图都在调用Pjax进行搜索

在进行Pjax调用之前,一切都很好,但在某些情况下(我不知道确切情况),页面正在刷新,搜索将应用于所有网格视图(这就是问题所在)

请给我这个问题的解决办法

我以前的问题是,每个网格视图也有分页,当我单击一个网格视图的分页时,它也会影响另一个网格视图的分页,解决方案是,我使用了不同的pageParam:

'pagination' => [
    'pageParam' => 'ConfirmedPackage',
],
对于数据提供程序的搜索/筛选,是否有类似类型的解决方案

在页面重新加载之后,它在url中使用相同的类名来搜索网格


谢谢。

发生这种情况的原因是,您对所有搜索模型都使用了相同的类。这反过来会导致筛选字段具有相同的名称,例如
ProductSearch[description]
。幸运的是,有一个解决办法

您应该在模型中定义自己的方法。默认情况下,它返回类名。对于您来说,它应该为您正在使用的每个模型实例返回不同的名称。这样,您将获得类似于
ProductSearch1[description]
ProductSearch2[description]
等内容

我建议您在类中定义一个公共变量(例如,
formName
),在创建模型实例时初始化它,然后在
formName()
方法中返回它

这里有一个具体的例子

class ProductSearch extends ProductSearch
{
    public $formName = null;

    public function formName()
    {
        if (null == $this->formName) {
            return parent::formName();
        } else {
            return $this->formName;
        }
    }

    //other class attributes and methods
}
以下是您如何使用此模型:

$model1 = new ProductSearch();
//will generate default names like ProductSearch[somefield]

$model2 = new ProductSearch(['formName' => 'MyProductForm']);
//will generate names like MyProductForm[somefield]

$model3 = new ProductSearch();
$model3->formName = 'MyProductForm';
//a different way to initialize the model
//will also generate names like MyProductForm[somefield]

正如我在问题中提到的,问题是由于相同的类名(在url中),我对搜索模型中的所有搜索函数使用了相同的类,当我尝试使用不同的类时,它工作得非常好:)


谢谢。

将id添加到
gridview
。将id添加到gridview无助于@gamitgso,请将pjax与id一起用于不同的gridview。是将所有gridview替换为相同的结果,还是将它们单独过滤,即结果不同,但按搜索表单过滤?在页面加载时,每个gridview都将有其自己的唯一数据(但列是相同的),当我试图在一个特定的网格中搜索时,所有其他网格也在搜索相同的东西,并根据它们自己的数据显示结果。目前,我已经删除了网格搜索,并使用一个搜索表单作为所有网格的通用搜索。Beowulfenator你明白我的意思。你的回答可能解决我的问题,但我是YII的初学者,而且我是我不知道如何用方法更改类名。但是你给了我一个提示,不同的类名可以解决问题。谢谢你的帮助:)你不能用方法更改类名。我会更新我的答案。