Twig içinde normal PHP fonksiyonu kullanıyormuş gibi, twig macro kullanabilirsiniz. Aşağıdaki örnek, içinde sorgu parametreleri olan dinamik urller yaratmak için kullanılır. Daha fazla bilgi için macro sayfasını okuyabilirsiniz.


Macro


İlgili linklere tıkladığımızda, a href tagındaki sort_by ve sort_direction parametrelerini değiştireceğiz.


{% macro sortColumn(label, field, direction) %}
{% if app.request.get('sort_direction') is defined %}
{% set direction = app.request.get('sort_direction') == 'asc' ? 'desc' : 'asc' %}
{% endif %}

<a href="{{ path(app.request.attributes.get('_route'),
app.request.query.all|merge({'sort_by': field, 'sort_direction': direction})) }}">{{ label }}</a>
{% endmacro %}
{% import _self as table %}

Test


Sort By 'sender' link appears here: {{ table.sortColumn('Sender', 'sender', 'asc') }}
Sort By 'receiver' link appears here: {{ table.sortColumn('Receiver', 'receiver', 'asc') }}

Şu anki adresimizin app_test.php/emails?type=delivered olduğunu varsayalım. Sayfamızdaki "sender" ve "receiver" linklerini tıkladığımızda, aşağıdaki sayfalara yönlendirileceğiz.


app_test.php/emails?type=delivered&sort_by=sender&sort_direction=asc
app_test.php/emails?type=delivered&sort_by=sender&sort_direction=desc
app_test.php/emails?type=delivered&sort_by=receiver&sort_direction=asc
app_test.php/emails?type=delivered&sort_by=receiver&sort_direction=desc