Closed dpf-dd closed 7 months ago
@dpf-dd
Kannst du mal testen?
// Standardwerte setzen durch die switch-Anweisung
switch ($this->type) {
case 'default':
$labelColClass = 'col-sm-2 control-label';
$formItemColClass = 'col-sm-10';
break;
case 'default_full':
case 'default_custom_full':
$labelColClass = 'col-sm-12';
$formItemColClass = 'col-sm-12';
break;
default:
// Falls keine passende Option gefunden wurde, können hier Standardwerte gesetzt werden
$labelColClass = 'col-sm-2 control-label';
$formItemColClass = 'col-sm-10';
break;
}
// Überschreibe die Standardwerte, wenn spezifische Werte gesetzt sind
if (isset($this->labelColClass)) {
$labelColClass = $this->labelColClass;
}
if (isset($this->formItemColClass)) {
$formItemColClass = $this->formItemColClass;
}
// HTML-Struktur für Label und Eingabefeld
$labelWrapper = '<div class="' . $labelColClass . '">';
$labelWrapperEnd = '</div>';
$inputWrapper = '<div class="' . $formItemColClass . '">';
$inputWrapperEnd = '</div>';
// Anpassungen für Inline-Formulare
if (true === $this->inline) {
$labelWrapper = '';
$labelWrapperEnd = '';
$inputWrapper = '';
$inputWrapperEnd = '';
}
// Ausgabe
echo '<div class="form-group ' . $this->class . '">' . $labelWrapper . $this->label . $this->infoTooltip . $this->infoCollapseButton . $labelWrapperEnd . $inputWrapper . $this->element . $inputWrapperEnd . '</div>' . $this->infoCollapse;
Das löst das Problem, aber dafür zieht es den Parent-Div irgendwie zu groß auf (kein padding mehr links und rechts)... Folgende Lösung funktioniert und sollte in deinem Sinne sein...
<?php
$labelColClass = $this->labelColClass;
# oder auch: $labelColClass = ($this->labelColClass) ?? '';
$formItemColClass = $this->formItemColClass;
# oder auch: $formItemColClass = ($this->formItemColClass) ?? '';
switch ($this->type) {
case 'default':
$labelColClass = 'col-sm-2 control-label';
$formItemColClass = 'col-sm-10';
break;
case 'default_full':
case 'default_custom_full':
$labelColClass = 'col-sm-12';
$formItemColClass = 'col-sm-12';
break;
}
$labelWrapper = '<div class="' . $labelColClass . '">';
$labelWrapperEnd = '</div>';
$inputWrapper = '<div class="' . $formItemColClass . '">';
$inputWrapperEnd = '</div>';
if (true === $this->inline) {
$labelWrapper = '';
$labelWrapperEnd = '';
$inputWrapper = '';
$inputWrapperEnd = '';
}
echo '<div class="form-group ' . $this->class . '">' . $labelWrapper . $this->label . $this->infoTooltip . $this->infoCollapseButton . $labelWrapperEnd . $inputWrapper . $this->element . $inputWrapperEnd . '</div>' . $this->infoCollapse;
Statt einen Leerwert zu initialisieren, an dieser Stelle einfach den Item-Wert abfragen un nehmen. Wenn dann in der switch-Schleife ein Case eintritt, dann wird es überschrieben...!?
@dpf-dd https://github.com/FriendsOfREDAXO/mform/pull/317 Bitte mal testen
Jo, das funktioniert auch @skerbis :)
Description / Beschreibung
Affected versions / Verwendete Versionen
REDAXO: 5.17.0 PHP: 8.2.16 Database: MariaDB 10.6.16 AddOns: MForm 7.4.3
Modul-Input:
Das funktionierte noch bei 7.4.0 oder .1 aber nicht mehr nach Update auf 7.4.3. Die Klassen werden nicht mehr übergeben...!?
Ich vermute den Fehler in der MForm-Fragment-Datei
mform_default.php
Eine Ausgabe von
$this->type
ergibtdefault-custom
- und dieser Case wird nicht abgefangen, weshalb die Klasse letzlich nicht geschrieben wird weil der leere Initialwert genommen wird... Leider war meine Recherche, wo dasdefault-custom
herkommt erfolglos. Evtl. muss es jadefault-custom-full
lauten - aber so tief stecke ich im MForm-Code nicht drin :(