2012-06-22 3 views
4

Ayez un jour tout le monde gentil, j'ai quelque chose à demander à votre hel, de mieux comprendre, voici mon code:Smarty passer la valeur de {math} Equatio à une variable

{math equation=((($order_total-$commission)+$discount+$delivery_charge)*$rate)} 

Je veux que ce soit passe à une autre variable, en php Je veux être comme ça

<?php 
    $var=0 
    foreach($result as $resultA){ 
    $var = $var+((($order_total-$commission)+$discount+$delivery_charge)*$rate); 
} 
?> 

espère que vous pouvez me aider les gars!

Répondre

11

Si vous utilisez Smarty 3 Je recommande fortement le creusement de fossés {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} 

Il est à la fois plus lisible et plus rapide (comme l'expression est réellement compilée, plutôt que eval()ed encore et encore).


Smarty 2 équivalent:

{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} 

S'il y a une chance de passer à Smarty 3 - faire!

+0

Salut, Im en utilisant Smarty 2.6.18, j'ai essayé votre suggestion, mais l'affichage de rien, comment puis-je traduire dans la version 2.6.18 –

+0

J'ai également mis à jour ma réponse pour montrer une solution Smarty2. s'il vous plaît fermez la question quand vous êtes satisfait – rodneyrehm

0

Essayez d'utiliser le paramètre assign:

De la documentation http://www.smarty.net/docsv2/en/language.function.math.tpl:

Si vous l'attribut assign, la sortie de la fonction {math} sera attribué à cette variable de modèle au lieu de la production étant au modèle.

Mais il serait préférable, si vous aviez fait des calculs similaires en utilisant PHP (à couche logique métier, pas vue)

Voir http://www.smarty.net/best_practices (section « Tenir à l'écart logique métier! »)

+0

salut V2P, j'essaie votre suggestion, mais rien ne fonctionne, il me donne l'erreur., Rodney –

Questions connexes