Seite 1 von 2
Seiten Pagination
Verfasst: 27.12.2025 10:05
von Kirk
Hi
Wenn in seiner EXT Seiten Pagination verwendet, hat man es bei Verwendung von Twig es so in HTML eingetragen:
ich frag mich allerdings ob man jenes
|length überhaupt noch benötigt. Hab dies an einer meiner EXT getestet, es funktioniert auch ohne Problemlos. Man kann ja wenn es mehr als 6 Seiten sind, die gewünschte Seite auch direkt eingeben, auch dies funktioniert ohne
|length Problemlos.
Diesbezüglich hab ich in den Dokus nichts gefunden.
Re: Seiten Pagination
Verfasst: 27.12.2025 10:31
von Dr.Death
Könnte nur eine Variablen Absicherung sein..... wenn z.b. $pagination nur "false or true" beinhaltet und keinen echten Integer
Re: Seiten Pagination
Verfasst: 27.12.2025 10:42
von Mike-on-Tour
Ich verwende, seit ich TWIG in meine Ext einbauen musste (war eine Vorgabe bei meinem ersten Einreichen zur Validierung) nur {% if pagination % und das funktioniert wunderbar.
Re: Seiten Pagination
Verfasst: 27.12.2025 11:50
von Kirk
Danke für eure Antworten. Als ich damals meine EXTs auf Twig umgestellt habe, hatte ich noch nicht so viel Erfahrung damit. Ich nahm dafür die EXT
Twig Converter in Anspruch und habe u. a. diesem keine Beachtung mehr geschenkt.
Re: Seiten Pagination
Verfasst: 27.12.2025 13:59
von LukeWCS
Hi Udo
Wie Dr.Death schrieb, das
|length ist eine Absicherung.
Man kann darauf verzichten, wenn man das Array selber generiert und alle möglichen Zustände der Array Variable kennt und somit sicher sein kann, dass es auch ohne Absicherung geht. Verarbeitet man jedoch ein fremdes Array, schadet es definitiv nicht, das zusätzlich abzusichern, alleine weil eine goldene Regel beim Programmieren lautet: "Vertraue niemals Benutzereingaben!". Und damit sind auch generell
fremde Daten gemeint, egal aus welcher Quelle.
Wobei auch
|length nicht wasserdicht ist, denn wenn die Variable kein Array sondern einen String mit dem Inhalt "test" enthalten würde, dann würde die Absicherung ebenfalls (und in dem Fall fälschlicherweise)
true liefern, weil das bei Arrays die Anzahl der Elemente liefert, aber bei einem String die Anzahl Bytes. Und sobald das 1 oder höher zurückgibt, wird das implizit als
true gewertet.
Code: Alles auswählen
{% set test = [
'Apfel',
'Kiwi',
] %}
{{ test|length ? 'true' : 'false' }} ({{ test|length }})<br>
{% set test = 'Brot' %}
{{ test|length ? 'true' : 'false' }} ({{ test|length }})<br>
Ergebnis:
Relevant sind die Explizit/Implizit Regeln bei PHP bezüglich Bool Umwandlung:
https://www.php.net/manual/de/language. ... an.casting
Eine implizite Abfrage auf
true bei einem Array reicht dann aus, wenn sichergestellt ist, dass die Variable
immer ein Array enthält, egal ob ein leeres Array oder ein bestücktes Array.
Re: Seiten Pagination
Verfasst: 27.12.2025 14:20
von Mike-on-Tour
Patrick hat natürlich recht, ich habe die Paginierung bisher immer nur bei selbst erstellten Arrays genutzt, da bin ich natürlich sicher, dass ein Array geprüft wird.
Re: Seiten Pagination
Verfasst: 27.12.2025 15:16
von IMC
Wenn man sich die Methode generate_template_pagination() anschaut sieht man das diese, eine Variable in das Template schreibt, oder nicht.
Deshalb wäre mein Vorschlag, wenn man auf den Twig-Filter length verzichten möchte, {% if pagination is defined %}.
Funktionieren wird bei der Pagnation alles, da entweder ein Array oder NULL in der Variablen pagination enthalten ist.
Re: Seiten Pagination
Verfasst: 27.12.2025 20:25
von Kirk
@Patrick
Bei dieser EXT geht es um die BBCodes welche man in einer Liste anzeigen lassen kann.
@Thorsten
Das mit {% if pagination is defined %} hatte auch in 4.0 entdeckt, werde dies höchstwahrscheinlich so verwenden.
Re: Seiten Pagination
Verfasst: 28.12.2025 14:50
von LukeWCS
Ah okay, dann weiss ich Bescheid.
is defined gibts übrigens schon lange, schon seit phpBB 3.1. Verwende ich in fast allen Exts.
Re: Seiten Pagination
Verfasst: 30.12.2025 11:31
von Kirk
Ich bin per Zufall auf was gestoßen wo ich nicht weiter komme. Wenn man bei der Direkt Eingabe der Seite eine Zahl eingibt die höher ist als die max. verfügbaren Seiten, kommt bei meiner EXT zwar kein Fehler sondern der Hinweis das es keine Einträge gibt. Gibt eine Seitenzahl ein die auch vorhanden ist funktioniert alles Problemlos.
Hab dieses mal in einem Thema getestet, dort wird man (egal auf welcher Seite man ist) auf die letzte geleitet.
Hab mir schon die pagination.php angesehen, komm aber nicht dahinter wie dies im core geregelt ist.