Wie man die Versionsnummer in Symfony-Projekten automatisch im Frontend anzeigt

Im vorherigen Artikel habe ich schon erklärt, wie man in Symfony eine automatische Versionierung in Git einbinden kann. Hier zeige ich, wie man die Versionsnummer dann im Frontend zeigen kann.

In vielen Webprojekten ist es nützlich, die aktuelle Versionsnummer der Anwendung im Frontend anzuzeigen, um Transparenz zu schaffen und die Wartung zu erleichtern. In dieser Anleitung zeige ich dir, wie du eine Versionsnummer zentral in Symfony verwaltest und diese automatisch in deinen Twig-Templates verfügbar machst.

Schritt 1: Erstelle eine version.txt-Datei

Zunächst erstellen wir eine version.txt-Datei im Stammverzeichnis deines Projekts. Diese Datei wird die Versionsnummer enthalten. (Im optimalen Fall wird diese Datei automatisch erstellt und hochgezählt.)

  1. Erstelle eine Datei version.txt im Stammverzeichnis deines Projekts.
  2. Schreibe die aktuelle Versionsnummer hinein, z.B.:
   1.0.0

Schritt 2: Erstellen einer Twig-Erweiterung (AppExtension.php)

Um die Versionsnummer in allen Twig-Templates zugänglich zu machen, erstellen wir eine Twig-Erweiterung.

  1. Erstelle das Verzeichnis src/Twig/, falls es noch nicht existiert:
rc/Twig/
src/
├── Controller/
├── Entity/
├── Repository/
├── Twig/ <-- Hier
└── …
  1. Erstelle die Datei AppExtension.php im Verzeichnis src/Twig/ mit folgendem Inhalt:
<?php

// src/Twig/AppExtension.php

namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

class AppExtension extends AbstractExtension
{
    private $version;

    public function __construct()
    {
        $this->version = trim(file_get_contents(__DIR__ . '/../../version.txt'));
    }

    public function getFunctions(): array
    {
        return [
            new TwigFunction('app_version', [$this, 'getAppVersion']),
        ];
    }

    public function getAppVersion(): string
    {
        return $this->version;
    }
}

Diese Klasse liest die Versionsnummer aus der version.txt-Datei und stellt sie als Twig-Funktion app_version() zur Verfügung.

Schritt 3: Registriere die Twig-Erweiterung

Damit Symfony die neue Twig-Erweiterung erkennt, musst du sie in der services.yaml-Konfigurationsdatei registrieren.

  1. Öffne die Datei config/services.yaml.
  2. Füge die folgende Zeile hinzu, um die Erweiterung zu registrieren:
services:
    App\Twig\AppExtension:
        tags: ['twig.extension']

Schritt 4: Verwendung der Versionsnummer im Twig-Template

Jetzt kannst du die Versionsnummer in jedem Twig-Template deines Projekts einfach anzeigen.

  1. Öffne das Twig-Template, in dem du die Versionsnummer anzeigen möchtest, z.B. base.html.twig.
  2. Verwende die Twig-Funktion app_version():
<footer>
    <p>Version: {{ app_version() }}</p>
</footer>

Schritt 5: Testen

  1. Starte den Symfony-Server oder aktualisiere die Seite, um sicherzustellen, dass die Versionsnummer korrekt angezeigt wird.
  2. Die Versionsnummer sollte nun im Footer oder an der von dir gewählten Stelle im Frontend erscheinen.

Durch die Verwendung einer Twig-Erweiterung bleibt dein Code sauber und modular, und du vermeidest es, die Versionslogik in jedem Controller einzeln implementieren zu müssen.