„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Verwendung von Twig zum Rendern von Markdown mit PHP

Verwendung von Twig zum Rendern von Markdown mit PHP

Veröffentlicht am 08.11.2024
Durchsuche:867

Using Twig for rendering Markdown with PHP

Twig ist eine Template-Engine zum Rendern von HTML bei der Entwicklung von Webanwendungen mit Symfony.
Die Flexibilität von Twig geht jedoch über die reine Generierung von HTML-Seiten hinaus. Es kann ein leistungsstarkes Tool für die Bereitstellung von Inhalten über mehrere Kanäle hinweg sein, z. B. für die Generierung von Markdown-Dateien, JSON-Ausgaben und sogar reinem Text, alles aus demselben Inhaltssatz.

Diese Anpassungsfähigkeit ermöglicht es Ihnen, Inhalte für verschiedene Kanäle zu erstellen.

Sie können Twig zum Generieren von HTML, Markdown, JSON, Text usw. verwenden

Anwendungsfall: Abrufen und Rendern eines Rezepts als Markdown mit Symfony

In diesem Beispiel verwenden wir den HTTP-Client von Symfony, um ein Rezept von einer externen API (https://dummyjson.com/recipes/1) abzurufen und es mit Twig als Markdown-Dokument zu rendern.

Dieser Ansatz zeigt, wie Sie die leistungsstarken Pakete von Symfony, wie den Symfony HTTP-Client für den externen Datenabruf und Twig für das Rendern von Ansichten, kombinieren können, um Inhalte über mehrere Kanäle bereitzustellen, beispielsweise Markdown-Berichte in einem Befehlszeilentool.

Der Befehl/das Skript, das wir erstellen werden, ruft die Rezeptdaten (Titel, Beschreibung, Zutaten und Anweisungen) von der API ab, verarbeitet sie und verwendet dann Twig, um den Inhalt in einem strukturierten Markdown-Format auszugeben. Dieser praktische Anwendungsfall zeigt, wie Twig über Webvorlagen hinaus verwendet werden kann und es vielseitig für die Generierung von Inhalten in verschiedenen Formaten macht.

Also verwenden wir:

  • Symfony Console Komponente https://symfony.com/doc/current/components/console.html zum Erstellen eines Befehlszeilentools
  • Symfony HTTP-Client https://symfony.com/doc/current/http_client.html zum Abrufen und Nutzen der HTTP-API
  • Symfony
  • Twig https://twig.symfony.com/doc/3.x/intro.html#Installation zum Rendern von Daten
  • Die Rezepte
  • API: Wir werden ein „Dummy“-Rezept https://dummyjson.com/recipes/1 auswählen, um den Prozess zum Abrufen eines strukturierten JSON und zum Konvertieren in eine Markdown-Datei zu zeigen und zu demonstrieren .
Installation der notwendigen Symfony-Komponenten

Stellen Sie sicher, dass Sie die erforderlichen Komponenten für HTTP-Anfragen und das Erstellen von Befehlen installiert haben:


Composer benötigt Symfony/http-client symfony/console twig/twig
composer require symfony/http-client symfony/console twig/twig
Erstellen Sie einen Symfony-Befehl

Erstellen wir zunächst einen neuen Symfony-Befehl.

Wenn Sie mehr darüber lesen möchten, wie Sie ein Befehlszeilentool mit der Symfony Command-Komponente erstellen, habe ich einen speziellen Artikel dazu geschrieben: https://dev.to/robertobutti/building-a-command-line-tool -with-php-and-symfony-console-4n6g

Befehlsklassen befinden sich normalerweise im Verzeichnis src/Commands.


# ein neues leeres Verzeichnis erstellen mkdir -p src/Befehle # eine neue leere Datei erstellen Berühren Sie src/Commands/FetchRecipeCommand.php
composer require symfony/http-client symfony/console twig/twig
Befehlsklasse (z. B. src/Commands/FetchRecipeCommand.php):


setName('Rezept') ->setDescription('Druckt ein Rezept in Markdown') ->setHelp('Dieser Befehl druckt ein einfaches Rezept in Markdown.'); // Schritt 1: Laden der Twig-Umgebung $loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/../resources/views'); $twig = new \Twig\Environment( $loader, // Optional: Caching für bessere Leistung aktivieren /*[ 'cache' => __DIR__ . '/../../cache', ]*/ ); $this->twig = $twig; parent::__construct(); } geschützte Funktion configure() { $this->setDescription('Ruft ein Rezept von einer API ab und rendert es als Markdown'); } geschützte Funktion ausführen(InputInterface $input, OutputInterface $output): int { // Schritt 2: Initialisieren Sie den HTTP-Client und rufen Sie das Rezept ab $client = HttpClient::create(); $response = $client->request('GET', 'https://dummyjson.com/recipes/1'); // Schritt 3: Abrufen des Informationsarrays $recipeData = $response->toArray(); // Schritt 4: Rendern Sie die Vorlage mit Twig und geben Sie einen String zurück $markdownOutput = $this->twig->render('recipe.md.twig', $recipeData); // Schritt 5: Den generierten Markdown ausgeben $output->writeln($markdownOutput); return Command::SUCCESS; } }
composer require symfony/http-client symfony/console twig/twig
Hier ist eine detaillierte Erklärung jedes Schritts im FetchRecipeCommand-Beispiel.

Schritt-für-Schritt-Aufschlüsselung

Schritt 1: Laden der Twig-Umgebung

Um Twig außerhalb seines typischen Webkontexts zu verwenden, beispielsweise in einem PHP-Befehlszeilentool, müssen Sie es zunächst manuell über die Twig\Environment-Klasse initialisieren. Hier ist ein Beispiel-Setup für Twig in einem Konsolenbefehl:


$loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/../resources/views'); $twig = new \Twig\Environment( $loader, // Optional: Caching für bessere Leistung aktivieren /*[ 'cache' => __DIR__ . '/../../cache', ]*/ ); $this->twig = $twig;
composer require symfony/http-client symfony/console twig/twig
Erläuterung:

    Die Twig-Umgebung wird initialisiert, indem ein FilesystemLoader erstellt wird, der Twig mitteilt, wo die Vorlagen zu finden sind. Dieser Fall verweist auf den Ordner src/resources/views, in dem Ihre Twig-Vorlagen gespeichert sind.
  • Dann wird die $twig-Umgebung instanziiert und ist für das Rendern der Vorlagen verantwortlich. Optionales Caching kann aktiviert werden, um die Leistung durch das Speichern vorkompilierter Vorlagen zu verbessern.
  • Schließlich wird die initialisierte $twig-Umgebung $this->twig zur späteren Verwendung zugewiesen (in der Methodeexecute()).
Schritt 2: Initialisieren des HTTP-Clients und Abrufen des Rezepts

$client = HttpClient::create(); $response = $client->request('GET', 'https://dummyjson.com/recipes/1');
composer require symfony/http-client symfony/console twig/twig
Erläuterung:

    Der Symfony HTTP-Client wird mit der Methode HttpClient::create() erstellt, die es dem Befehl ermöglicht, HTTP-Anfragen auszuführen.
  • Um ein Rezept abzurufen, führt die Methode request() eine GET-Anfrage an die angegebene URL (https://dummyjson.com/recipes/1) durch.
  • Die API gibt eine JSON-Antwort zurück, die in der Variablen $response gespeichert ist.
Schritt 3: Abrufen der Informationsreihe

$recipeData = $response->toArray();
composer require symfony/http-client symfony/console twig/twig
Erläuterung:

    Die toArray()-Methode konvertiert die JSON-Antwort von der API in ein PHP-Array. Dieses Array enthält die Daten des Rezepts (z. B. Name, Zutaten, Anweisungen), die im nächsten Schritt zum Füllen der Twig-Vorlage verwendet werden.
Schritt 4: Rendern der Vorlage mit Twig

$markdownOutput = $this->twig->render('recipe.md.twig', $recipeData);
composer require symfony/http-client symfony/console twig/twig
Erläuterung:

    Die render()-Methode der Twig-Umgebung generiert die Markdown-Ausgabe. Es lädt die Vorlage (recipe.md.twig) aus dem Ordner src/resources/views.
  • Die von der API abgerufenen Rezeptdaten ($recipeData) werden an die Vorlage übergeben, wo sie Platzhalter wie Rezeptnamen, Zutaten und Anweisungen ersetzen und eine vollständig formatierte Markdown-Datei erstellen.
  • Der gerenderte Markdown-Inhalt (die von der render()-Methode zurückgegebene Zeichenfolge) wird in der Variablen $markdownOutput gespeichert.
Schritt 5: Ausgabe für den generierten Markdown generieren

$output->writeln($markdownOutput);
composer require symfony/http-client symfony/console twig/twig
Erläuterung:

    Der endgültige Markdown-Inhalt wird mithilfe der Methode $output->writeln() auf der Konsole ausgegeben. Diese Methode gibt die Zeichenfolge an die Konsole aus, sodass Benutzer das formatierte Rezept im Markdown-Format sehen können (eventuell können Sie die Ausgabe in eine Datei in der Shell umleiten).
Erstellen der Starterdatei

Sie müssen eine Starterdatei erstellen, damit der Benutzer Ihren Symfony-Befehl direkt von der Shell aus starten kann. (In diesem Artikel erstellen wir keine Symfony-Anwendung; wir erstellen ein PHP-Skript mit den Symfony-Paketen.)

Im Projektverzeichnis, in dem sich die Datei „composer.json“ und das Verzeichnis „src“ befinden, können Sie eine „my-app“-Datei erstellen.

#!/usr/bin/env php setDefaultCommand("recipe"); $app->add(new FetchRecipeCommand()); $app->run();
composer require symfony/http-client symfony/console twig/twig
Um die Namespaces und Klassen korrekt zu verwenden, stellen Sie sicher, dass Sie den Abschnitt „Autoload“ in der Datei „composer.json“ festlegen:


{ "erfordern": { „symfony/http-client“: „^7.1“, „symfony/console“: „^7.1“, „Zweig/Zweig“: „^3.14“ }, „autoload“: { „psr-4“: { „MyExample\\“: „src/“ } } }
composer require symfony/http-client symfony/console twig/twig
Wenn Sie den Autoload-Abschnitt ändern, empfehle ich, die Autoload-Datei zu sichern:


composer dump-autoload
composer require symfony/http-client symfony/console twig/twig
Jetzt müssen Sie die Twig-Vorlage/Ansicht erstellen, um die von der API abgerufenen Daten darzustellen.

Erstellen Sie eine Twig-Vorlage/Ansicht für das Rezept

Als nächstes erstellen Sie eine Twig-Vorlage/-Ansicht, um das Rezept im Markdown-Format darzustellen.

Diese Vorlage sollte im Verzeichnis „views“ abgelegt werden (z. B. src/resources/view/recipe.md.twig).

# Rezept: {{ name }} - Vorbereitungszeit: {{ prepTimeMinutes }} Minuten - Garzeit {{ CookTimeMinutes }} Minuten - Schwierigkeitsgrad: {{ schwierigkeit }} - Küche: {{ Küche }} - Portionen für {{ Portionen }} Personen, mit {{ KalorienPerServing }} Kalorien pro Person ## Zutaten: {% für Zutat in Zutaten %} - {{ Zutat }} {% endfor %} ## Anweisungen: {% für Anleitung in Anleitung %} - {{ Anweisung }} {% endfor %} Genießen!
composer require symfony/http-client symfony/console twig/twig
Diese Twig-Ansichtsdatei rendert das Rezept im Markdown-Format mit Abschnitten für den Rezeptnamen, die Zutaten und die Anweisungen.

Den Befehl ausführen

Um den Befehl auszuführen, führen Sie Folgendes im Terminal aus:


php meine-app
composer require symfony/http-client symfony/console twig/twig
Falls Sie mehr als einen Befehl haben, können Sie Folgendes starten:


php M-App-Rezept
composer require symfony/http-client symfony/console twig/twig
Um alle verfügbaren Befehle anzuzeigen:


php My-App-Liste
composer require symfony/http-client symfony/console twig/twig
Abschluss

Mit diesem Ansatz können Sie mit dem HTTP-Client von Symfony problemlos Daten von einer externen API abrufen, die Antwort verarbeiten und die Ausgabe mit Twig in einem strukturierten Format rendern. In diesem Fall gibt der Befehl ein Rezept als Markdown aus, aber diese Technik kann an jeden anderen Inhalt oder Datentyp angepasst werden, den Sie verarbeiten müssen.

Viel Spaß mit deinem Rezept!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/robertobutti/using-twig-for-rendering-markdown-with-php-2d24?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3