在Twig上按组拆分结果

时间:2018-02-23 01:57:27

标签: php templates twig opencart

我正试图按用户/地区拆分我的Opencart销售,但它的工作是有限的。

{% set handledPeople   = [] %}
{% set handledProducts = [] %}
{% for usuario in products if usuario.sellername not in handledPeople %}
        {% sellername: {{ usuario.sellername }} %}
        {% set handledPeople = handledPeople|merge([usuario.sellername]) %}
        {% for product in products if product.name == usuario.name and product not in handledProducts %}
            <p>{{ product.name }}</p>
            {% set handledProducts = handledProducts|merge([product.name]) %}            
        {% endfor %}/p>
{% endfor %}

现在,它没有显示所有产品,它停在第二个产品中。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你想做什么?

这是不正确的Twig语法:

{% set sellername = usuario.sellername %}

也许你的意思是:

sellername

但它无论如何都没有意义,因为你不能在任何地方使用变量products。如果删除该行代码,则数组"products" => array:4 [▼ 0 => array:2 [▼ "sellername" => "John" "name" => "foo" ] 1 => array:2 [▼ "sellername" => "John" "name" => "bar" ] 2 => array:2 [▼ "sellername" => "Lisa" "name" => "baz" ] 3 => array:2 [▼ "sellername" => "Daniel" "name" => "ham and spam" ] ] 如下所示:

        <p>foo</p>

/p>
        <p>baz</p>

/p>
        <p>ham and spam</p>

/p>

你会得到这个:

{% set groupedProducts = {} %}
{% for product in products %}
    {% set groupedProducts = groupedProducts|merge({
        (product.sellername): groupedProducts[product.sellername]|default([])|merge([product.name])
    }) %}
{% endfor %}

{% for seller, products in groupedProducts %}
    {{ seller }} is selling:
    {% for product in products %}
        {{ product }}
    {% endfor %}
{% endfor %}

也许不是你想要的? : - )

如果您改为这样做:

John is selling:
        foo
        bar
    Lisa is selling:
        baz
    Daniel is selling:
        ham and spam

你会得到这个:

{{1}}

这是您想要的结果吗?

See TwigFiddle

PS。这种代码(按组拆分结果)最好用PHP代替Twig(如果可能的话,OpenCart可能很乱)。