Repository navigation
10.0.1
Kleines Wartungsrelease. Update von 10.0.0 ist unspektakulär: keine Datenmigration, keine Breaking Changes, einfach drüber.
Die Beispielmodule tun wieder, was sie sollen
Beim Durchgehen der mitgelieferten Beispiele kam Unschönes ans Licht: Fünf davon sind beim Ausführen auf einen Fatal Error gelaufen — ließen sich aber trotzdem per Knopfdruck als echte Module installieren. Falsches Argument bei addSelectField(), setSize('full') statt setSize(int), ein vergessenes use-Statement und ein rex_var::toStr(), das es nie gab.
Dazu kam: 14 Beispiele hatten als Ausgabe-Code nur einen Debug-Stub (dump(MFormRepeaterHelper::decode(...))) — bei den Nicht-Repeater-Demos obendrein mit der falschen Methode, die dort gar nichts liefern kann. Alle haben jetzt einen echten, lauffähigen Ausgabe-Code.
Inzwischen werden alle 42 Demo-Module gegen eine laufende REDAXO-Instanz gerendert, nicht nur auf Syntax geprüft. 42 von 42 laufen sauber durch.
Neu: Helper für Slots, die kein Repeater sind
decode() ist nur für Repeater zuständig. Felder mit Punkt-Notation (1.1, 1.2, …) liegen zwar auch als JSON im Slot, sind aber keine Item-Liste — dafür gab es bisher nichts außer rex_var::toArray():
use FriendsOfRedaxo\MForm\Utils\MFormOutputHelper;
$werte = MFormOutputHelper::values(1); // ['1' => 'Titel', '2' => 'Text']
$titel = MFormOutputHelper::value(1, '1', ''); // einzelnes Feld, mit Default
$tief = MFormOutputHelper::value(2, 'a.b'); // verschachtelt per Punkt-Pfad
$text = MFormOutputHelper::value(3); // einfacher Slot
if (MFormOutputHelper::isRepeater(1)) { /* von Feld auf Repeater migriert? */ }Der Vorteil gegenüber rex_var::toArray(): Slot-Id statt REX_VALUE-String, HTML-Entities werden dekodiert, durch nl2br() eingefügte <br>-Tags repariert, und values() gibt immer ein Array zurück statt null. Dieselben drei Methoden gibt es als Alias auf MFormRepeaterHelper, falls euch der Einstieg über decode() vertrauter ist.
Nebenbei behoben: decode() ist bei so einem Slot bisher mit einem TypeError ausgestiegen statt einfach [] zu liefern. Alles, was 10.0.0 schon verarbeitet hat, liefert unverändert dasselbe — ein eigener Test hält das fest.
Labels im Repeater
Bei setFull() bekam die Label-Spalte im Flex-Repeater zusätzlich control-label, obwohl der klassische Parser dort nur col-sm-12 setzt. Da .form-horizontal .control-label rechtsbündig ausrichtet, stand das Label rechts über einem linksbündigen Feld voller Breite. Danke @JulianSchnaars für den Fix (#460)!
Das CSS des Repeaters spricht die Label-Spalte jetzt über .mfr-field-label an statt über .control-label — sonst hätten setFull()-Felder in den Layouts vertical und inline ihre Label-Formatierung verloren.
Außerdem
Das Release-ZIP schleppt keine Entwicklungs-Artefakte mehr mit: tests/, phpunit.xml.dist, composer.json, node_modules und Konsorten bleiben jetzt draußen. docs/ bleibt natürlich drin, die Doku-Seite im Backend liest ja daraus.
Dank an @coderabbitai für den Review — zwei echte Fehler in den neuen Helpern sind dabei noch aufgefallen.