symfony 如何使字符串数学计算在Twig中计算

nwo49xxi  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一个像“((2*160)+53)1.00000”这样的字符串,我在Twig template中的数据中接收到它。如何使计算工作并返回计算出的数字,而不是数学中的普通字符串?
因此,期望输出将只是一个数字作为数学结果(这里是373)。
Add:实际上接收到的字符串是“((V
160)+53)*1.00000”,其中V被替换为某个数量。

4dc9hkyq

4dc9hkyq1#

您可以使用TwigExtension轻松创建自定义Twig函数(请参阅https://symfony.com/doc/5.2/templating/twig_extension.html#sample-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");
    }
}

或者一种和使用像这样在树枝模板:

{{ calculate('((V*160)+53)*1.00000', {V: 53}) }}

相关问题