smarty передает значение из {math} equatio в переменную
Приятного всем дня, у меня есть что спросить у вашей Хель, чтобы лучше понять вот мой код:
{math equation=((($order_total-$commission)+$discount+$delivery_charge)*$rate)}
Я хочу, чтобы это было передано в другую переменную, в php я хочу быть таким
<?php
$var=0
foreach($result as $resultA){
$var = $var+((($order_total-$commission)+$discount+$delivery_charge)*$rate);
}
?>
Надеюсь, вы сможете мне помочь, ребята!
2 ответа:
Если вы используете Smarty 3, я настоятельно рекомендую отказаться от {math}:
{$order_total = 123} {$commission = 13} {$discount = 10} {$delivery_charge = 20} {$rate = 1.1} {$result = 0} {$result = $result + ($order_total - $commission + $discount + $delivery_charge) * $rate} {$result}
Он одновременно лучше читается и быстрее (так как выражение фактически компилируется, а не
eval()ed
снова и снова).
Эквивалент Smarty 2:
{assign var="order_total" value=123} {assign var="commission" value=13} {assign var="discount" value=10} {assign var="delivery_charge" value=20} {assign var="rate" value=1.1} {assign var="result" value=0} {math assign="result" equation="result + (order_total - commission + discount + delivery_charge) * rate" result=$result order_total=$order_total commission=$commission discount=$discount delivery_charge=$delivery_charge rate=$rate } {$result}
Если есть шанс перейти на Smarty 3-сделайте это!
Попробуйте использовать параметр
assign
:Из документации http://www.smarty.net/docsv2/en/language.function.math.tpl :
Если вы зададите атрибут assign, то выходные данные функции {math} будут назначены этой переменной шаблона, а не шаблону.
Но было бы лучше, если бы вы производили подобные вычисления с помощью PHP (на уровне бизнес-логики, а не на view)
См. http://www.smarty.net/best_practices (раздел " держите бизнес-логику отдельно!")