【问题标题】:Displaying the value in a Laravel Nova Value metric在 Laravel Nova Value 指标中显示值
【发布时间】:2019-01-10 11:01:31
【问题描述】:

我需要显示模型Fooprice 列的总和。现在我可以做到这一点。

    public function calculate(Request $request)
    {

        return $this
            ->sum($request, Contribution::class, 'contribution_amount')
            ->dollars();
    }

显示以下输出。

  • 22 的总和 => $22
  • 3120 的总和 => $3.10k

我只需要显示$22$3120 而不需要任何格式。我试图覆盖聚合函数,但它仍然没有给我正确的输出格式。

protected function aggregate($request, $model, $function, $column = null, $dateColumn = null)
    {
        $query = $model instanceof Builder ? $model : (new $model)->newQuery();

        $column = $column ?? $query->getModel()->getQualifiedKeyName();

        $previousValue = with(clone $query)->whereBetween(
            $dateColumn ?? $query->getModel()->getCreatedAtColumn(), $this->previousRange($request->range)
        )->{$function}($column);

        return $this->result(
            with(clone $query)->whereBetween(
                $dateColumn ?? $query->getModel()->getCreatedAtColumn(), $this->currentRange($request->range)
            )->{$function}($column)
        )->previous($previousValue);
    }

有人可以在这里指点一下吗?

【问题讨论】:

  • 如果最后不链接dollars()会怎样?
  • 我试过了。没运气。这是 3.20k
  • 很奇怪。你能告诉我们你的贡献模型吗?在contribution_amount 上是否定义了任何访问器?
  • 无。它只是扩展了 Eloquent 模型。没有额外的代码。甚至没有演员表。

标签: php laravel laravel-nova


【解决方案1】:

为未来的读者..

从 Nova 1.3.1 开始,我们可以使用 Numeral.js 格式化来格式化 Trend/Value 指标中的值。

return $this
            ->result($val)
            ->dollars()
            ->format('0,0.00')

sn-p 将显示的值格式化为两位小数。

【讨论】:

  • 整洁!感谢您详细说明。
【解决方案2】:

从 v1.2.0 开始

格式发生在nova/resources/js/components/Metrics/Base/ValueMetric.vue

formattedValue() {
    if (!this.isNullValue) {
        const numeralValue = numeral(this.value)

        return numeralValue.value() > 1000
            ? this.prefix + numeralValue.format('(0.00a)')
            : this.prefix + this.value
    }

    return ''
},

它是不可配置的。

解决方法

您可以编辑上述文件以返回非格式值。然后运行npm run prod 构建并运行php artisan nova:publish 命令复制更新的文件。

注意 - 您的更改将在您以后更新 Nova 版本时被覆盖。

【讨论】:

    猜你喜欢
    • 2021-02-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多