Month: Januar 2017

Twig & localizeddate() – Darstellung bzw. Konvertierung eines Datums anhand des Symfony-Locales

19. Januar 2017 Allgemein, Blog, Log, Symfony No comments ,

Nutzung des „date()“-Filters in Twig

Anwendungsfall:
Beim Rendering eines Twig-Templates durch einen Controller in Symfony wird ein Objekt vom Typ „DateTime“ an das Template übergeben. Das Datum soll innerhalb des Templates dargestellt werden.

Lösung:
Auf das Objekt vom Typ „DateTime“ wird ein Twig-Filter angewandt:

1
{{ newspaper.dateOfIssue | date('m.F Y') }}

Dies ergibt beispielsweise die Darstellung von 01.December 2008. Die Ausgabe erfolgt standardmäßig mit „en_EN“ (Locale) unabhängig davon, ob in der config.yml von Symfony ein anderer Locale-Wert gesetzt wurde.

Anzeige des Datums mit gezielter Sprache unter Verwendung von localizeddate()

Möchte man nun die Ausgabe des Datums an den vorliegenden Locale-Wert von Symfony anpassen, so kann man folgende Anpassung vornehmen:

(alt)

1
{{ newspaper.dateOfIssue | date('m.F Y') }}

(neu)

1
{{ newspaper.dateOfIssue | localizeddate('long', 'none', app.request.locale, NULL, 'dd.MMMM Y') }}

Was hat sich geändert?
Der Filter date() wird durch localizeddate() ersetzt. Dieser kann mehrere Argumente zur Darstellung der Anzeige entgegennehmen. Wichtig für o.g. Beispiel ist der Bezug auf den Loacale-Wert der Symfony-Awendung mit „app.request.locale“ und die entsprechende Formatierung „dd.MMMM Y“. Die Formatierung des Datums mittels „localiceddate()“ unterscheidet sich vom Filter „date()“.

Bei der Anwendung von „date()“ kann bei der Formatierung diese Übersicht verwendet werden. Beim Einsatz von „localiceddate()“ ist diese Formatierungs-Übersicht zu verwenden. Welche Argumente beim „localizeddate“-Filter verwendet werden können, ist der Übersicht Argumente localizeddate zu entnehmen.

Voraussetzungen für den localizeddate mit Twig und Symfony

Für die Vermeidung von Fehlermeldungen wie:

Attempted to load class „Twig_Extensions_Extension_Intl“

oder

An exception has been thrown during the rendering of a template
(„The Symfony\Component\Locale\Stub\StubIntlDateFormatter::__construct() method’s argument $locale value ‚en_IN‘ behavior is not implemented. Only the ‚en‘ locale is supported.

sind Twig-Extensions und Symfony-Intl in das Projekt einzubeziehen. Diese können via Composer mit:

composer require twig/extensions
composer require symfony/intl

installiert werden. Weiterhin ist die services.yml um folgende Zeilen zu ergänzen:

1
2
3
4
    twig.extension.intl:
        class: Twig_Extensions_Extension_Intl
        tags:
            - { name: twig.extension }

Auf dem entsprechenden System (bei mir Ubuntu + php7) ist php7.0-intl zu installieren. Dies ist eine Erweiterung (Extension) für Internationalisierungen (siehe php.net). Die Installation erfolgt mit:

sudo apt-get install php7.0-intl

Damit kann „localizeddate()“ nun grundsätzlich wie in o.g. Beispiel angewandt werden. Der Cache von Symfony ist anschließend zu leeren und der Anwendungsserver neu zu starten.


Werbeanzeige:
extending_symfony2
Extending Symfony 2 Web Application Framework
[Author: Sebastien Armand]

2017! Was euch hier erwartet

3. Januar 2017 Allgemein, Blog No comments , ,

Zunächst einmal wünschen wir euch ein gesundes neues Jahr. Viel Glück und vor allem ganz wenige Bugs.
Doch nun zum eigentlichen Thema: Was erwartet euch auf programmers-log.net dieses Jahr.

Wir wollen uns dieses Jahr unter anderem einer neuen Kategorie auf unserer Website widmen und diese lautet: Arduino !
Vom Kauf des ersten Arduino über die verschiedenen Arduino Boards bis hin zu kleinen und großen Projekten mit dem fantastischen Mikrocontroller Board. Ihr bekommt von uns
gut erklärte Anleitungen inklusive den Links zu Shops wo ihr Arduinos und alle Teile erwerben könnt.
Außerdem könnt ihr gerne Projektwünsche über die Kommentarfunktion äußern und wir setzen ausgewählte Ideen zum Thema Arduino um.
Ist das nicht super ?!

Schaut einfach vorbei unter:
Kategorie: Arduino

Natürlich widmet sich aber auch dieses Jahr unser Log vor allem den Problemen und deren Lösungen auf die wir während unserer Arbeit immer wieder stoßen.
Also besucht uns fleißig.

Eure Coder Micha und Robert