TS: und bei verschiedenen Texten mit unterschiedlicher Anzahl von Variablen

Beitrag lesen

Hello,

Ansich cool, aber was mache ich wenn die Eingabe variablen variieren, wenn also einmal mehr einmal weniger da sind. Ich meine es sind verschiedene Texte und eine große Anzahl an Variablen.

wenn ich einen Text habe in dem 6 Variablen (Platzhalter) sind dann wieder einen Text in dem 20 Variablen(Platzhalter) sind.

Deshalb fragte ich nach der Vorbehandlung des Templates für den Kontext (hier in Richtung "untergeordneter Kontext"). Gemeint waren damit die Platzhalter im Text.

#Vorgehensweise:

  • zuerst bestimmst Du die Platzhalter-Begrenzer. Dazu eigenen sich z. B. Konstrukte, wie "<!--{{ ??? }}-->", oder auch nur "[{ ??? }]", ganz nach Geschmack. Es sollten jedenfalls möglichst paarweise Begrenzer sein (also einen für "Start" und einen für "Stop"). Die ??? stehen hier für den eigentlichen Bezeichner in der DB. Diese Begrenzer dürfen dann weder im Roh-Template, noch in den Daten vorkommen. Entweder, men verbietet sie vollkommen, oder sie müssten an beiden Stellen maskiert werden.

  • Nach der Vorbehandlung des Templates kannst Du die (passiven) Werte in die Platzhalter einsetzen. Das geht bei PHP mit einem einfachen str_replace() in der Array-Variante.

  • Du baust Dir dazu ein Array auf, dessen Schlüssel die Platzhalter sind und dessen Werte die einzusetzenden Werte aus der Datenbank sind.

  • mittles zweier Hilfsfunktionen kannst Du dir vorher alle im Text verfügbaren Platzhalter, bzw. alle aus der Datenbank kommenden anzeigen lassen und so kreuzweise abgleichen, ob etwas vergessen wurde.

  • Je nach umgebendem Kentext (z. B. HTML-Ausgabe) kannst Du entscheiden, ob nicht erfüllte Platzhalter aus dem Resultattext entfernt werden sollen, als HTML-Warnug erscheinen sollen, oder aber als (im gerenderten Text) unsichtbare HTML-Komentare stehen bleiben sollen.

  • Die Platzhalterarrays lassen sich auch kaskadieren. Wenn also am Anfang z. B. "{{Fullname}}" im Array steht mit dem zugeorneten Wert "{{Firstname}} {{Familiyname}}" und in späteren Elemente des Arrays die beiden Teilplatzhalter "{{Familyname}}" und "{{Firstname}}" wieder auftauchen mit ihren zugehörigen Werten, dann werden die entsprechend ersetzt.

Für statische Werte kann mit PHP (und vielen anderen Skriptspreachen) daher mit wenigen Handgriffen leistungsstarke passive Templates aufbauen. Diese Templates können dann von DAUs aufgebaut werden, ohne dass sie Dir die ganze Ausgabe zerschießen, oder sogar Zugriff auf das aktive Backend bekommen.

Liebe Grüße
Tom S.

--
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.