Seite 1 von 2

[3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 08:09
von serpent_driver
Hallo Miteinander,

nachdem ich mir nun 2 Tage lang einen Wolf nach einer Lösung gesucht habe, muss ich nun doch das Forum bemühen. Deswegen schon mal Danke im Voraus. Nachdem mir phpBB noch vergleichsweise neu ist, was auch für Twig gielt, weil eher Smarty Jünger, bitte ich um Nachsicht.

Worum gehts? Ich muss innerhalb des Templates die Existenz von $_GET abfragen können. Wofür es unter Smarty reservierte Variablen für so was gibt und man deswegen nicht erst was coden muss, scheint gemutmaßt mit Twig alles andere als eine Selbstverständlichkeit zu sein. Deswegen meine Frage, was muss man unter Twig machen, um einen GET Parameter im Template abfragen zu können?

Danke

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 11:42
von Crizzo
Hi,

was genau bezweckst du mit der Prüfung, ob $_GET existiert? :-?

Grüße

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 11:55
von serpent_driver
Kannst Du mit "Edge Side Includes" (ESI) was anfangen? Falls nicht, wirds schwer den Zweck zu beschreiben.

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 11:57
von Crizzo
Ne, sry, sagt mir nur was vom Prinzip.

Ich hab mich mal ein wenig umgehört, hab aber bisher keine Antwort für deine Frage gefunden.

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 12:02
von serpent_driver
Das kann doch nicht sein, dass die Abfrage von $_GET (im Template) so was exotisches ist?!

Automatisch dem Beitrag hinzugefügt nach 3 Minuten 11 Sekunden. Bitte Regel für „Topic-Bumping“ beachten. Danke.

Mal ganz blöd gefragt und auch nur weil mir Twig so was von fremd ist, lässt sich innerhalb von Template Dateien mit PHP Code arbeiten?

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 12:14
von Crizzo
serpent_driver hat geschrieben: 17.07.2020 12:02 Das kann doch nicht sein, dass die Abfrage von $_GET (im Template) so was exotisches ist?!
Naja, in der Regel wird in den .php-Dateien der PHP-Code ausgeführt und der definiert dann Template-Variablen, die dann auch TRUE oder FALSE zurückgeben können. D.h. die Abfrage findet "vorher" und "woanders" statt.
serpent_driver hat geschrieben: 17.07.2020 12:02 Mal ganz blöd gefragt und auch nur weil mir Twig so was von fremd ist, lässt sich innerhalb von Template Dateien mit PHP Code arbeiten?
Ja, das geht. Musst du im Admin-Bereich > Sicherheit aktivieren und dann kannst du das verwenden: https://area51.phpbb.com/docs/33x/codin ... templating

Grüße

Edit: https://twig.symfony.com/doc/2.x/advanced.html#globals Ich weiß halt nicht, ob das von phpBB 3.3.0 unterstützt wird.

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 12:22
von serpent_driver
Crizzo hat geschrieben: 17.07.2020 12:14 Ja, das geht. Musst du im Admin-Bereich > Sicherheit aktivieren und dann kannst du das verwenden: https://area51.phpbb.com/docs/33x/codin ... templating
Nee, das kann die Lösung auch nicht sein, weil ich dann jedem phpBB Betreiber abverlangen müsste die Sicherheit aufzuweichen. Das wofür ich das brauche, ist eben für die Masse gedacht und nicht nur für den persönlichen Gebrauch.....

Ich geh mal weiter suchen. Danke erstmal!

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 12:25
von Crizzo
Evlt. lohnt es sich den Umweg über eine Extension zu gehen, die dir dann die jeweiligen Template-Variablen einrichtet, die dein Style dann nutzt. Die müsste dann halt parallel zum Style installiert werden, ist evtl. komfortabler für den User als eine ACP-Einstellung zu ändern.

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 12:32
von serpent_driver
Verzeih mir bitte Kritik, aber für so was eigentlich essentielles wie die Abfrage von $_GET extra eine Extension schreiben zu müssen, fehlt mir jeder Bezug. Vielleicht liegts auch daran, dass ich Twig zu sehr mit Smarty vergleiche. Template Engine scheint dann doch nicht gleich Template Engine zu sein.

Re: [3.3] $_GET im Template abfragen

Verfasst: 17.07.2020 13:04
von oxpus
serpent_driver hat geschrieben: 17.07.2020 12:32 Verzeih mir bitte Kritik, aber für so was eigentlich essentielles wie die Abfrage von $_GET extra eine Extension schreiben zu müssen, fehlt mir jeder Bezug. [...]
Öhm, mir fehlt das Verständnis nach einem Anwendungsfall, warum $_GET direkt im Template abgefragt werden sollte.
Zumal die direkte Verwendung von $_POST und $_GET sowie anderer Super Globals aus gutem Grund durch das phpBB im Standard unterbunden werden; allem voran aufgrund möglicher Sicherheitslücken, die dabei entstehen können, egal ob bei der Verwendung im Template oder in einem PHP Script.

Dabei ergibt sich normalerweise folgendes "Minimalscript"; die verwendeten Objekte dabei mal als "eingebunden" vorausgesetzt:

Code: Alles auswählen

$wert = $request->variable('wert', 0); // Als Zahl (0), ansonsten '' verwenden, um einen String auszuwerten -> hierbei wird $_REQUEST ausgewertet!

if (!empty($wert))
{
	$template->assign_var('S_WERT', true);
}
Man kann aber auch explizit $_GET abfragen:
$wert = $request->variable('wert', 0, false, \phpbb\request\request_interface::GET);
false als 3. Parameter bedeutet hierbei die Unterbindung von Multibyte-Zeichen, was bei Texten sinnvoll wäre (dann also eher true verwenden).

Und im Template kann dann letztlich per Bedingung darauf reagiert werden:

Code: Alles auswählen

{% if S_WERT %}
// Anzuzeigender Inhalt
{% endif %}
Wo ist also das Problem?
"Edge Side Includes" wird doch bereits durch das phpBB selber gewährleistet, da bereits nur die Inhalte dem Template übergeben und "aktiviert" werden, die letztlich auch angezeigt werden sollen. Da machen für mich template-bezogene Bedingungen auf $_GET keinen Sinn mehr.
Zumal man auch über Module im Webserver dafür sorgen kann, dass Elemente nachgeladen werden können, also z. B. Bilder oder Javascript, wenn die Seite ansonsten fertig geladen wurde.

Wenn es aber darum geht, lediglich ein phpBB-Template zu erstellen, welches auf Werte aus Super Globals reagieren soll, um Edge Side Includes zu ermöglichen, dann würde ich eher zu Javascript raten, anstatt $_GET direkt im Template verwenden zu wollen: https://www.javascript-kurs.de/javascri ... nutzen.htm