这个twig代码性能是否明智,足够快?

时间:2017-10-30 12:38:36

标签: php html symfony twig

这有点建立在比这更好的方式吗?我在想循环,我可以添加一次,然后通过我的代码询问如果元素[1] ==“why_iclei”会发生什么?或者以某种方式把它放得更干净?这种表现是否明智,足够快?

                    <li class="  ">
                    <a href="#">why iclei</a>
                    <ul class="dropdown">
                        {% for element in elements %}
                            {% if element[1] == "why_iclei" %}
                                {% if element[2] == 1 %}
                                    <li><a href="#">{{ element[0] }}</a></li>
                                {% endif %}
                            {% endif %}
                        {% endfor %}
                    </ul>
                </li>
                <li>
                    <a href="#">our work</a>
                    <ul class="dropdown">
                        {% for element in elements %}
                            {% if element[1] == "our_work" %}
                                {% if element[2] == 1 %}
                                    <li><a href="#">{{ element[0] }}</a></li>
                                {% endif %}
                            {% endif %}
                        {% endfor %}
                    </ul>
                </li>

在我的代码中,我的循环大约相同20次。我能以某种方式把它拿出来并从中得到所有需要的值吗?

1 个答案:

答案 0 :(得分:1)

在一个循环中构建列表项,在标记中只输出变量

{% set icleiList = '' %}
{% set our_workList = '' %}
{% for element in elements %}
    {% if element[1] == "why_iclei" and element[2] == 1  %}
        {% set icleiList = icleiList ~ '<li><a href="#">' ~ element[0] ~'</a></li>' %}
    {% elseif element[1] == "our_work" and element[2] == 1 %}
        {% set our_workList = our_workList ~ '<li><a href="#">' ~ element[0] ~'</a></li>' %}
    {% endif %}
{% endfor %}

<li class="  ">
    <a href="#">why iclei</a>
    <ul class="dropdown">
        {{ icleiList|raw }}
    </ul>
</li>
<li>
    <a href="#">our work</a>
    <ul class="dropdown">
        {{ our_workList|raw }}
    </ul>
</li>