in Twig wie Sie vergleichen, wenn das Datum ist innerhalb von X Tagen?

Ich bin mit Zweig Kennzeichnen, die eine Zeile in einer Tabelle, wenn das Datum im Zusammenhang mit dieser Zeile ist weniger als 30 Tage alt sind.

Zweig der Dokumentation besagt, dass zum vergleichen zweier Datum-Objekte, müssen Sie konvertieren Sie das Objekt, um das Datum und stellen Sie einen Vergleich auf diese Weise:

{% if date(yourDate) < date(-'30days') %} ... {% endif %}

Jedoch nicht angeben, gewusst wie: übergeben Sie das Datum in das format für die linke Seite des Vergleichs, ich verstehe, dass Twig die date-Funktion ist eine Art wrapper für PHP ' s date.

In PHP würde ich in der Regel rufen:

$myDate = \DateTime::createFromFormat("m/d/Y", $myDate);

aber in Twig anscheinend gibt es keine Möglichkeit, anzugeben, wird das ursprüngliche Datum format um konvertieren Sie es in ein anderes format, oder es ist zumindest nicht in der Dokumentation.

Dies ist, was ich versucht habe:

{% if date(d.LastDate) > date('-30days') %}...{% endif %}

{% if d.LastDate | format("Y-m-d") > date('-30days') %}...{% endif %}

{% if date("m/d/Y", d.LastEmailSentDate) > date('-30days') %}...{% endif %}

Diese Bedingungen und deren Varianten zurück, die folgende Ausnahme in Symfony2:

 An exception has been thrown during the rendering of a template 
("DateTimeZone::__construct(): Unknown or bad timezone (---)")

Mein controller ist wieder in ein Datum im format: m/d/Y und ich will einfach nur Flagge, die Zeile wenn das Datum weniger als 30 Tage alt sind.

  • Sie können hinzufügen, eine Funktion, die aufgerufen wird getIsDateLessThan31DaysOld() in Ihre Einheit, und machen Sie es zurückgeben true, false. Dann rufen Sie diese Funktion in Twig: {% if d.isDateLessThan31DaysOld %}...{% endif %}. Sollte es einfacher sein, PHP-code zu schreiben, als Twig-code.
  • Sollte dies nicht gehörenden Vorlagen. Geben Sie Ihre Modell[s] mit einer geeigneten Methode.
InformationsquelleAutor ILikeTacos | 2013-11-04
Schreibe einen Kommentar