2017-09-15 1 views
0

Ich versuche, Makros zu verwenden, um einige nach oben und unten Pfeile für die Sortierung in einer Tabelle hinzuzufügen, die mit KnpPaginator verwendet wird.Erstellen eines Makros zur Verwendung in der Vorlage

Ich bin neu in Makros und der Doc ist ein bisschen langweilig für mich, also werde ich versuchen zu erklären und zu zeigen, was ich getan habe.

habe ich einen Zweig in meinem Makro-Ordner icons.html.twig genannt, dass mein Makro

{% extends 'STBackofficeBundle::base.html.twig' %} 

{% macro icon_class(type) %} 
    {% set type_class = { 
     sort: 'fa-angle-down' 
    } %} 
    {{ type_class[type] }} 
{% endmacro %} 

enthält ich es in meiner Vorlage

{% import "STBackofficeBundle:Macros:icons.html.twig" as icons %} 

importiert und versuchte, sie in einem Tabellenkopf hinzufügen

<th>{{ icons.icon_class('sort') }}</th> 

So funktioniert es nicht wirklich, weil es in der Zeichenkettezeigtanstelle des Symbols selbst. Und wenn ich versuche, die Anführungszeichen zu entfernen, habe ich einen Fehler. Also ich weiß nicht was ich falsch mache?

Antwort

1

Es funktioniert nicht, weil Sie gerade einen Klassennamen drucken.

<th> 
    <i class="fa {{ icons.icon_class('sort') }}" aria-hidden="true"></i> 
</th> 
+0

Vielen Dank, es funktioniert! :) Ich habe deine Antwort angenommen. Ich habe noch eine Frage, was ist, wenn ich beim Klicken sortiere, möchte ich, dass der Pfeil in 'fa-angle-up' wechselt und wenn ich erneut klicke, wird wieder' fa-angle-down' angezeigt. –

+0

Wenn Sie ganze Objekte mit JS sortieren, sollten Sie die Klasse des Symbols von 'fa-angle-down' nach' fa-angle-up' mit JS ändern. Wenn Sie es mit dem PHP-Controller tun, sollten Sie den Parameter sort an URL übergeben und das entsprechende Symbol in der Vorlage entsprechend diesem Parameter darstellen. –

+0

Ich benutze KnpPaginator und ich möchte vermeiden, js zu verwenden, wie ich php benutze. kann ich keine Bedingung mit 'if' in meinem Makro zum Ändern des Pfeils machen? Hast du ein einfaches Beispiel, wie man das leicht macht? weil ich nicht ganz verstehe, was du mir zu sagen versuchst –

Verwandte Themen