Как ввести в эксплуатацию веточку? - PullRequest
0 голосов
/ 01 октября 2018

У меня есть функция для платежей

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 голосов
/ 01 октября 2018

Если вы хотите использовать функцию php в Twig, вам может потребоваться создать новое расширение.

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, вы можете прочитать документацию для получения дополнительной информации.

...