日期:2014-05-17  浏览次数:20448 次

请教高手 关于Smarty的问题!!!
如下购物车数组
$carts=array(
1=>array(name=>“Nokia 5510” , price=>800, qty=>2 ),
3=>array(name=>“Nokia 6610” , price=>1800, qty=>1 ),
4=>array(name=>“Nokia 7710” , price=>2800, qty=>1 ),
7=>array(name=>“Nokia 8810” , price=>2500, qty=>5 ),
}
用smarty循环,以表格形式显示购物车,表格行背景色有轮换效果,表格下有总额统计


------解决方案--------------------
在php页面里做好加法,传入smarty模板里就是了。smarty好像不管运算的。

循环加出
$sum
$smarty->assign("sum",$sum);

<tr bgcolor="#999999"><td colspan="3" style="text-align:right">总金额:{$sum}</td></tr>
------解决方案--------------------
我查了一下手册,可以计算

在Math [数学运算] {assign var="foo" value="`$foo+$bar`"}

你的模板可以写成这样
HTML code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <title>无标题文档</title>
    </head>

    <body>
        <table width="500">
            <tr bgcolor="#999999"><td width="34%">名称</td><td width="33%">价格</td><td width="33%">数量</td></tr>
            {foreach from=$carts key=k item=item0}
                {if $k % 2}
                    <tr bgcolor="#FFFF66">
                {else}
                    <tr bgcolor="#66FFFF">
                {/if}
                {foreach from=$item0 item=item1}
                    <td>{$item1}</td>                
                {/foreach}
                </tr>
                {assign var="sum" value="`$sum+$item0.price`"}
            {/foreach}
            <tr bgcolor="#999999"><td colspan="3" style="text-align:right">总金额:{$sum}</td></tr>
        </table>
    </body>
</html>

------解决方案--------------------
如果要做乘法
{assign var="sum" value="`$sum+$item0.price*$item0.qty`"}