Symfony2在树枝模板中计数

时间:2015-04-24 05:46:54

标签: php symfony twig

真的不可能在树枝上做简单的数学运算,或者我错过了什么?如果我正在显示带有循环的项目,并且我想要总结项目价格我该怎么办?

  {% 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>
                      <td>{{ item.pc }}</td>
                    </tr>

                <tr>
                  <td colspan="6" align="right">Total Price:    </td>
                  <td>{{ item.price|something }}</td>  /// count here
                </tr>

                    {% endfor %}

更新

我的扩展课程:

<?php
// src/Mp/ShopBundle/Twig/AppExtension.php
namespace Mp\ShopBundle\Twig;

class AppExtension extends \Twig_Extension
{
    public function getFunctions()
    {
        return array(
            'getTotalPrice'  => new \Twig_Function_Method($this, 'getTotalPrice'));
    }

    public function getTotalPrice(Items $items)
    {
        $total = 0;
        foreach($items as $item){
            $total += $item->getPrice();
        }
        return $total;
    }

    public function getName()
    {
        return 'app_extension';
    }
}

服务:

services:
    app.twig_extension:
        class: Mp\ShopBundle\Twig\AppExtension
        public: false
        tags:
           - { name: twig.extension }

当我使用{{getTotalPrice(product)}}时,我在该行收到错误:

在渲染模板期间抛出异常(&#34; Catchable Fatal Error:传递给Mp \ ShopBundle \ Twig \ AppExtension :: getTotalPrice()的参数1必须是Mp \ ShopBundle \ Twig \的实例项目,没有给出,在第177行的C:\ wamp \ www \ Digid \ tree \ app \ cache \ dev \ twig \ b4 \ 5d \ b2cbf04f86aeef591812f9721d41a678d3fc5dbbd3aae638883d71c26af0.php中调用,并在MpShopBundle中定义&#34;):前端:product_summary.html .twig第94行。

3 个答案:

答案 0 :(得分:3)

在Twig中作出总和的简短片段:

{% set total = 0 %}
{% for product in products %}
    {% set total = total + product.getPrice() %}
{% endfor %}
Total: {{ total }}EUR

答案 1 :(得分:0)

Dominykas55,

即使你可以在Twig中进行计算,但它首先不是它的作用。从您的控制器或服务中执行,或使用Twig函数。

但是,如果你需要Twig,那么:

{% set total = 0 %}
{% for item in product %}
    {% set total = total + total.price %}
{% endfor %}
{{ total }}

每次迭代都会知道总数,并且您可以轻松地显示它。

答案 2 :(得分:0)

您可以随时为自己编写方法。看一下文档:

http://symfony.com/doc/current/cookbook/templating/twig_extension.html

你需要的只是一个简单的方法:

class AppExtension extends \Twig_Extension
{
    /**
     * Returns a list of functions to add to the existing list.
     *
     * @return array An array of functions
     */
    public function getFunctions()
    {
        return array(
            'getTotalPrice'  => new \Twig_Function_Method($this, 'getTotalPrice'));
    }

    public function getTotalPrice(Items $items)
    {
        $total = 0;
        foreach($items as $item){
            $total += $item->getPrice();
        }
        return $total;
    }

    public function getName()
    {
        return 'app_extension';
    }
}

然后在模板中使用它,如thsi:

{{ getTotalPrice(product) }}