Php 如何在shopware中的订单页面上计算价格

Php 如何在shopware中的订单页面上计算价格,php,smarty,shopware,Php,Smarty,Shopware,我已经覆盖了shopware中的订单页面,我想创建所有尚未处理的订单的总数。我写这个只是为了显示我需要的变量。我想把订单的发票金额加起来 {extends file="parent:frontend/account/orders.tpl"} {block name="frontend_account_orders_welcome"} {$smarty.block.parent} {debug} <ul> {foreach $sOpenOrde

我已经覆盖了shopware中的订单页面,我想创建所有尚未处理的订单的总数。我写这个只是为了显示我需要的变量。我想把订单的发票金额加起来

{extends file="parent:frontend/account/orders.tpl"}

{block name="frontend_account_orders_welcome"}
    {$smarty.block.parent}
    {debug}
    <ul>
        {foreach $sOpenOrders as $sOpenOrder}
        <li> Order number :{$sOpenOrder['ordernumber']}</li>
        <li> User ID :{$sOpenOrder['userID']}</li>
        <li> Invoice_amount :{$sOpenOrder['invoice_amount']}</li>
        <li> ordertime : {$sOpenOrder['ordertime']}</li>
        <li> paymentID : {$sOpenOrder['paymentID']}</li>
        <hr>
        {/foreach}
    </ul> 
{*show here the total of the prices for the the products above something like $Total=[invoice_amount_1+invoice_amount_2]*}
{/block}
{extends file=“parent:frontend/account/orders.tpl”}
{block name=“前端\帐户\订单\欢迎”}
{$smarty.block.parent}
{debug}
    {foreach$sopenders作为$sopenders}
  • 订单号:{$sopender['ordernumber']}
  • 用户ID:{$sOpenOrder['userID']}
  • 发票金额:{$sopender['Invoice\u amount']}
  • ordertime:{$sopender['ordertime']}
  • paymentID:{$sopender['paymentID']}

  • {/foreach}
{*在这里显示上述产品的总价格,比如$total=[invoice\u amount\u 1+invoice\u amount\u 2]*} {/block}

有什么办法吗?我对shopware和smarty有点陌生

我也不熟悉这个应用程序,但应该可以:

    {extends file="parent:frontend/account/orders.tpl"}

    {block name="frontend_account_orders_welcome"}
        {$smarty.block.parent}
        {debug}
        {$sOrderTotal = 0}
        <ul>
            {foreach $sOpenOrders as $sOpenOrder}
            <li> Order number :{$sOpenOrder['ordernumber']}</li>
            <li> User ID :{$sOpenOrder['userID']}</li>
            <li> Invoice_amount :{$sOpenOrder['invoice_amount']}</li>
            {$sOrderTotal += $sOpenOrder['invoice_amount']}
            <li> ordertime : {$sOpenOrder['ordertime']}</li>
            <li> paymentID : {$sOpenOrder['paymentID']}</li>
            <hr>
            {/foreach}
        </ul> 
    <p>{$sOrderTotal}</p>
    {/block}
{extends file=“parent:frontend/account/orders.tpl”}
{block name=“前端\帐户\订单\欢迎”}
{$smarty.block.parent}
{debug}
{$sOrderTotal=0}
    {foreach$sopenders作为$sopenders}
  • 订单号:{$sopender['ordernumber']}
  • 用户ID:{$sOpenOrder['userID']}
  • 发票金额:{$sopender['Invoice\u amount']}
  • {$sOrderTotal+=$Sopender['invoice_amount']}
  • ordertime:{$sopender['ordertime']}
  • paymentID:{$sopender['paymentID']}

  • {/foreach}
{$sOrderTotal}

{/block}

我加了三行。

终于得到了我想要的

{extends file="parent:frontend/account/orders.tpl"}

{block name="frontend_account_orders_welcome"}
    {$smarty.block.parent}
    {$sOrderTotal = 0}
    <ul>
        {foreach $sOpenOrders as $sOpenOrder}
        <li> Order number :{$sOpenOrder['ordernumber']}</li>
        <li> User ID :{$sOpenOrder['userID']}</li>
        <li> Invoice_amount :{$sOpenOrder['invoice_amount']}</li>
        {assign var="sum_cost" value=$sum_cost+$sOpenOrder.invoice_amount}{*this is besically just declaring a variable and then adding up all the values through the loop*}
        <li> ordertime : {$sOpenOrder['ordertime']}</li>
        <li> paymentID : {$sOpenOrder['paymentID']}</li>
        <hr>
        {/foreach}
    </ul> 
<p>Total cost of all orders : {$sum_cost}</p>
{/block}
{extends file=“parent:frontend/account/orders.tpl”}
{block name=“前端\帐户\订单\欢迎”}
{$smarty.block.parent}
{$sOrderTotal=0}
    {foreach$sopenders作为$sopenders}
  • 订单号:{$sopender['ordernumber']}
  • 用户ID:{$sOpenOrder['userID']}
  • 发票金额:{$sopender['Invoice\u amount']}
  • {assign var=“sum_cost”value=$sum_cost+$sOpenOrder.invoice_amount}{*这实际上只是声明一个变量,然后通过循环将所有值相加*}
  • ordertime:{$sopender['ordertime']}
  • paymentID:{$sopender['paymentID']}

  • {/foreach}
所有订单的总成本:{$sum_cost}

{/block}
在php中直接计算总量并将其分配给视图可能更容易。Smarty是一个模板引擎——即使它允许您进行计算和更多(未传递的)工作,您也应该在php中进行。
与其包含帐户视图,不如编写一个插件,将未结订单分配给视图。

这正好打破了它“哎呀!发生了一个错误!我们已被告知问题并尝试解决它。请在短时间内重试。”再说一次,我对smarty代码分支不熟悉。您需要将变量设置为零(
$sOrderTotal=0
),然后在循环内递增它(
$sOrderTotal+=$sOpenOrder['invoice\u amount']
)。php代码是正确的,但smarty如何处理花括号内的代码,我不知道。我明白你的意思,但这正是我的问题。。。但是,是的,我可以设置变量,并将其显示在前端。。现在我需要计算一下……它可能很简单,就像
{$sOrderTotal=$sOrderTotal+$sOpenOrder['invoice\u amount']}
,用老式的方式来做。谢谢你的帮助,我想我也注意到了这一点,我需要用php来做,因为数组中的值是像34,05这样的字符串,而我需要34.05,现在只需要将它们修剪到34。你可以在其中创建自定义插件:1。创建您自己的控制器
Shopware\u Controllers\u Frontend\u MyAppAccount
以及所有新的必要计算2。或者您可以创建一些订单列表订阅者,在那里您可以订阅事件
Enlight\u Controller\u Action\u PostDispatchSecure\u Frontend\u帐户
,并处理您的计算。