2016-03-29 10 views
1

Ich habe mehrere Vorlagen, in denen ich die Literale für den Wochentag und den Monat schreiben müssen. Ich habe einen kleinen Zweig-Datei:Zweig Einstellung Variable in Eltern-Vorlage

{% set numDay = target.dateStop | date ("w", user_timezone) %} 
{% set daysOfWeek = {0: 'Sunday', 1: 'Monday', 2: 'Tuesday', 3: 'Wednesday', 4: 'Thursday', 5: 'Friday', 6: 'Saturday'} %} 
{% set weekDay = daysOfWeek[numDay] %} 

{% set numMonth = target.dateStop | date ("n", user_timezone) %} 
{% set months = {1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'} %} 
{% set month = months[numMonth] % 

In der Vorlage, wo ich diese Werte muss ich zuerst die "Helfer" Vorlage

{% include '@.../Email/HTML/en_US/localized_day_and_month.twig' with [user_timezone] %} 

Dann einfach schließen verwenden Sie die Variable

... {{ weekDay }} ... 

I erhalten Sie immer noch diesen Fehler:

failed: Variable "weekDay" does not exist in ".../HTML/it_IT:do_deadline_new.html.twig" at line 9

Ich weiß, es ist wahrscheinlich eine bessere Lösung für mein „lokalisierte Datum Problem“, aber das ist nicht mein Punkt hier

EDIT

ich den ersten Schnipsel in der Basisklasse zog ich in jedem Template erben, aber diese Variablen noch scheinen ignoriert werden:

base.html.twig

{% block dateTimeVariables %} 
    {% set numDay = target.dateStop | date ("w", user_timezone) %} 
    {% set daysOfWeek = {0: 'Domenica', 1: 'Lunedì', 2: 'Martedì', 3: 'Mercoledì', 4: 'Giovedì', 5: 'Venerdì', 6: 'Sabato'} %} 
    {% set weekDay = daysOfWeek[numDay] %} 

    {% set numMonth = target.dateStop | date ("n", user_timezone) %} 
    {% set months = {1: 'gennaio', 2: 'febbraio', 3: 'marzo', 4: 'aprile', 5: 'maggio', 6: 'giugno', 7: 'luglio', 8: 'agosto', 9: 'settembre', 10: 'ottobre', 11: 'novembre', 12: 'dicembre'} %} 
    {% set month = months[numMonth] %} 
{% endblock %} 

Und in der Kind-Vorlage:

{% extends '@.../Email/HTML/it_IT/base.html.twig' %} 

Und doch:

failed: Variable "weekDay" does not exist in ".../HTML/it_IT:do_deadline_new.html.twig" at line 6

Die Linie 6 ist dies:

[{{ group.name }}] Today at {{ target.created | date("H:i", user_timezone) }} {{ agent.name }} {{ agent.surname }} has created a file due on {{ weekDay | lower }} {{ target.dateStop | date ("d", user_timezone) }} {{ month }} at {{ target.dateStop | date ("H:i", user_timezone) }}. 
+0

, welche Version von Zweig verwenden Sie? –

+0

Es sollte 1.24.0 sein – gioaudino

+0

@gioaudino Ihr Problem könnte ähnlich gelöst werden, um die Lösung, die ich in dieser Frage skizzieren: http://StackOverflow.com/a/32642249/2970321 – alexw

Antwort

0

Von twig doc :

The include statement includes a template and returns the rendered content of that file into the current namespace.

AFAIK der eingebundenen Datei wird nur gemacht werden, jede Variable Das war in der Inc. eingestellt worden Die angegebene Datei wird nicht zum übergeordneten Namespace hinzugefügt.

Also versuchen Sie stattdessen extends zu verwenden. Etwas wie folgt aus:

parent.twig

{% set numDay = target.dateStop | date ("w", user_timezone) %} 
    {% set daysOfWeek = {0: 'Sunday', 1: 'Monday', 2: 'Tuesday', 3: 'Wednesday', 4: 'Thursday', 5: 'Friday', 6: 'Saturday'} %} 
    {% set weekDay = daysOfWeek[numDay] %} 

    {% set numMonth = target.dateStop | date ("n", user_timezone) %} 
    {% set months = {1: 'January', 2: 'February', 3: 'March', 4: 'April', 5: 'May', 6: 'June', 7: 'July', 8: 'August', 9: 'September', 10: 'October', 11: 'November', 12: 'December'} %} 
    {% set month = months[numMonth] %} 

child.twig

{% extends 'parent.twig'%} 
+0

Eigentlich ist die Vorlage, wo ich die located_day_and_month bereits erweitert Eine andere Vorlage und Mehrfachvererbung ist nicht erlaubt. Ich denke, die beste Wahl ist, diese Variablen-Setter in die Eltern-Vorlage zu verschieben und nur diejenige zu erweitern, die die Include-Anweisungen entfernt. – gioaudino

+0

Happy, um zu helfen. Wenn diese Antwort oder ein anderer Ihr Problem gelöst hat, markieren Sie es bitte als akzeptiert –

+0

Ich bekomme immer noch diesen Fehler.Ich habe die Frage bearbeitet, um die Änderungen anzuzeigen – gioaudino

Verwandte Themen