如何在Twig中进行字符串数学计算

问题描述 投票:0回答:1

我有像“((2*160)+53)*1.00000”这样的字符串,我将其接收到Twig模板中的数据。如何进行计算并返回计算出的数字,而不是数学的纯字符串?

因此,预期输出只是数学结果中的一个数字(此处为 373)。

添加:实际上接收到的字符串是“((V*160)+53)*1.00000”,其中V被替换为一些数字。

string symfony twig string-math
1个回答
0
投票

您可以使用 TwigExtension 轻松创建自定义 Twig 函数(请参阅 https://symfony.com/doc/5.2/templated/twig_extension.html#create-the-extension-class)。

喜欢:

<?php
namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

class AppExtension extends AbstractExtension
{
    public function getFunctions()
    {
        return [
            new TwigFunction('calculate', [$this, 'calculateExpression']),
        ];
    }

    public function calculateExpression(string $input, array $extraValues = [])
    {
        foreach ($extraValues as $key => $value) {
            $input = str_replace($key, $value, $extraValues);
        }

        return eval("return $input");
    }
}

或者在 Twig 模板中像这样使用:

{{ calculate('((V*160)+53)*1.00000', {V: 53}) }}
© www.soinside.com 2019 - 2024. All rights reserved.