gpt4 book ai didi

search - yii2 一个 GridView 的搜索正在影响其他 GridView

转载 作者:行者123 更新时间:2023-12-02 08:22:59 24 4
gpt4 key购买 nike

我在索引页面中有多个 GridView ,每个 GridView (例如:待处理的记录 GridView 、已完成的记录 GridView 、已取消的记录 GridView ,...)具有相同的列(例如:名称、编号、位置、. ..),每个 GridView 都有自己的搜索/过滤行,并且每个 GridView 都在进行 Pjax 调用以进行搜索。

在进行 Pjax 调用之前,一切都很好,但在某些情况下(我不知道确切的情况)页面会刷新,并且搜索将应用于所有 GridView (这就是问题)。

请给我解决方案。

我的上一个问题是,每个 GridView 也有分页,当我点击一个 GridView 的分页时,它也会影响另一个 GridView 的分页,解决方案是,我使用了不同的 pageParam :

'pagination' => [
'pageParam' => 'ConfirmedPackage',
],

是否有类似类型的数据提供者搜索/过滤解决方案?

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

谢谢。

最佳答案

发生这种情况的原因是您为所有搜索模型使用相同的类。反过来,这会导致过滤器字段具有相同的名称,例如 ProductSearch[description]。幸运的是,有一个解决方案。

您应该定义自己的 formName()模型中的方法。默认情况下,它返回类名。对于您来说,它应该为您使用的每个模型实例返回不同的名称。这样您就会得到诸如 ProductSearch1[description]ProductSearch2[description] 等内容。

我建议您在类中定义一个公共(public)变量(例如,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]

关于search - yii2 一个 GridView 的搜索正在影响其他 GridView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33073978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com