Symfony2动态显示从数组到树枝的值

时间:2015-04-27 10:46:33

标签: php arrays symfony twig

我有一个功能,我计算每个产品的最终价格,然后将其保存在一个数组中。现在,当我想要显示值时,我坚持如何动态显示所有这些值。

这是功能:

public function getTotal($items)
{
    $total = array();
    foreach($items as $key=>$item){
        $total[$key] = $item->getPrice() - $item->getDiscount() + $item->getValue();
    }
    return $total;
}

所有方法getValue,getDiscount等都正常工作。

这是我尝试显示的方式:

{{ getTotal(product)[key]}}

问题在于,当我写例如{{ getTotal(product)[0]}}{{ getTotal(product)[1]}}等时,我得到正确的值,但只有1个产品。我需要从所有这些中获取值。

如果我{{ getTotal(product)[key]}}我发现了一个奇怪的错误:

MpShopBundle:前端:product_summary.html.twig第89行中不存在键“0,1”的数组的键“12”

我不知道为什么键等于12?也许我必须写一些不同的东西?

更新 谢谢你的答案,我甚至没想过用树枝循环,但我终于得到了一些价值观。但是,我不知道为什么,但是枝条循环为每个产品分配两个值。

应该是这样的:

Product1 : 0(key):145(value)
Product2 : 1:415

但事实就是如此:

Product1 : 0:145 1:415
Product2 : 0:145 1:415

这是树枝:

 {% if product is defined %}

            {% for key, item in cart %}

              {% for item in product %}


                <tr>

                  <td> <img width="60" src="{{ asset('bundles/mpFrontend/assets/products/4.jpg') }}" alt=""/></td>

                  <td>{{ item.model }}</td>
                  <td>
                    <div class="input-append"><input class="span1" style="max-width:34px" placeholder="1" id="appendedInputButtons" size="16" type="text">
                    <button class="btn" type="button"><i class="icon-minus"></i></button>
                    <button class="btn" type="button"><i class="icon-plus"></i></button>
                    <button class="btn btn-danger" type="button"><a href="{{ path('cart_remove', {'id': key}) }}"><i class="icon-remove icon-white"></i></button>
                    </div>
                  </td>

                  <td>{{ item.price }}</td>
                  <td>{{ item.discount }}</td>
                  <td>{{ item.value }}</td>

                  {% if getTotal(product) is iterable %}
                    {% for key, sum in getTotal(product) %}

                     <td>{{ key }}:{{ sum }}</td>

                  {% endfor %}
                {% endif %}

                </tr>

 {% endfor %}

3 个答案:

答案 0 :(得分:0)

使用twig for loop

{% for total in getTotal(product) %}
  {{ total }}
{% endfor %}

答案 1 :(得分:0)

您可以使用twig for循环。

示例:

{% if getTotal(product) is iterable %}
    {% for key, sum in getTotal(product) %}
        {{ key }}:{{ sum }}
    {% else %}
        empty array
    {% endfor %}
{% endif %}

答案 2 :(得分:0)

您不应该使用循环,并将您的函数从外部移动到db.users.insert({ forname: 'John', surname: 'Smith', DOB: 12061989, streaming: [{media_content_id: 5000, stream_min: 45, stream_date: 10042015}, {media_content_id: 5001, stream_min: 45, stream_date: 10042015}] }); db.media_content.insert({ _id: 5000, content_name: 'FILM B', durations_min: 45, content_type_price: { min_price: 0.002, } }); db.media_content.insert({ _id: 5001, content_name: 'FILM B', durations_min: 45, media_type: 'video', content_type_price: { min_price: 0.002, } }); 类的方法。

而不是循环:

product

新功能:

<td>{{ product.total }}</td>