如何在树枝上委托?

时间:2018-10-01 13:56:25

标签: php twig twig-extension

我有付款功能

public function calculateClientCost(Transaction $transaction)
{
    if ($transaction->getPaymentType() == Order::PAYMENT_TYPE_ALTERNATIVE) {
        return $this->container->getParameter('commission_alternative_price');
    }

    if ($transaction->getPaymentType() == Order::PAYMENT_TYPE_PRICE) {
        return $transaction->getPrice();
    }
}



public function calculateCommission(Transaction $transaction)
{
    if ($transaction->getPaymentType() == Order::PAYMENT_TYPE_ALTERNATIVE) {
        return $this->container->getParameter('commission_alternative_price');
    }

    if ($transaction->getPaymentType() == Order::PAYMENT_TYPE_PRICE) {
        return round($this->container->getParameter('commission_publisher') * $transaction->getPrice() / 100, 2);
    }
}

有一个问题,我想在树枝中使用该功能。我的树枝看起来像

<span class="rab_mobile">{{ 'table.head.net_price'|trans }}:</span>
{% if t.isNormalPrice() %}
    {{ t.price|localizedcurrency(currency) }}
{% else %}
    <em>{{ t.alternativePayment|slice(0,15) }}</em>
{% endif %}

我想在树枝上增加佣金。 谁能建议我该怎么做? 预先感谢。

1 个答案:

答案 0 :(得分:0)

如果要在Twig中使用php函数,则可能需要创建一个新的扩展名。

class calculateThingsForPaymentsExtension extends \Twig_Extension
{
    public function calculateCommission(Transaction $transaction)
    {
        if ($transaction->getPaymentType() == Order::PAYMENT_TYPE_ALTERNATIVE)
        {
            //your logic
        }
    }

    public function getFunctions()
    {
        return (array(new \Twig_Function('calculateCommission',
                                         array($this, 'calculateCommission'))));
    }
}

然后在Twig

{% set commission = calculateCommission(transaction) %}

我在Symfony 4中使用了它,我的班级被自动注册为服务,可以照常使用。

假定您将Twig与Symfony一起使用,则可以阅读documentation,以获取更多信息。