【问题标题】:Fully Custom Filter in Yii2Yii2 中的完全自定义过滤器
【发布时间】:2018-12-21 20:13:47
【问题描述】:

我有一个gridview,我需要用一些计算逻辑显示一列的百分比。

完成了,我在一列中有一个数值表示“百分比”,但在表中我只有“标记”字段。

现在我想为这个“百分比”字段添加一个搜索过滤器,但问题在于我的表中没有百分比,所以当我尝试搜索百分比时,它只检查标记值。

如何在 gridview 过滤器中搜索“百分比”值而不是搜索“标记”字段。

https://www.screencast.com/t/IfUezWnJ

实际上,我在数据库列“电池”中有一个值,例如“1256”,经过一些计算,我在 gridview 中显示了电池百分比。但在 gridview 搜索过滤器中,我想按百分比搜索。但我不能,因为在表格中我们没有百分比。

【问题讨论】:

  • 我试图在 yii 2 中找到自定义过滤器,但找不到这样的东西
  • 你是如何计算百分比的,你的表格是什么样子的?
  • 显示您已从表中添加示例数据的标记表。我们不知道您所说的标记是什么意思

标签: gridview yii2


【解决方案1】:

看看this page

主要步骤是:

  1. 在基础模型中创建一个虚拟属性(getter 方法),用于计算从真实标记字段中获取百分比所需的计算:getPercentage()
  2. 在搜索模型中,添加与基础模型中虚拟属性同名的公共属性(属性)(public $percentage
  3. 在规则方法中,为这个新属性添加一个安全验证器。
  4. 在搜索方法中,将适当的 where 子句添加到查询中。如果百分比计算很复杂或涉及子查询,这可能会有点棘手。一个简单的情况是,如果百分比是从另一个字段获得的,比如说max_value。 在这种情况下,您可以使用如下行:$query->andWhere ('ilike','mark',$this->percentage/100*max_value)(只是一个示例。当然ilike 不是这种情况的最佳运算符。)
  5. 使用 gridview 小部件中的虚拟字段。

如果您需要子查询或 with 语句来获取百分比,则需要在 $query 对象中添加一些附加语句,但主要步骤相同。

如果您想在 gridview 小部件中添加排序功能,您必须定义如何排序和在必要时使用表达式。快来this link看看吧

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2018-11-21
    • 2020-06-11
    • 2016-06-25
    相关资源
    最近更新 更多