Joomla 5 Mitteilung

Wir freuen uns mitteilen zu können, dass seit dem 29. Januar 2024 alle unsere Joomla Erweiterungen mit Joomla 5 kompatible sind.

Für alle die gerade noch von Joomla 3 auf 4 aktualisieren: Anleitungen für die Joomla 4 Migration gibt es hier:

Es gibt nun auch eine eigenständige Dokumentation für Visforms für Joomla 4 und für Visforms auf Joomla 5

Forum

Visforms Subscription Inhaber können in unserem Forum Fragen stellen. Bitte mit dem entsprechenden Benutzer anmelden.
Jeder kann lesend auf das Forum zugreifen.

Bitte stellen Sie nur 1 Frage pro Thema.

Wichtig Angaben für fast jede Frage:
V1: Welche Visforms-Version läuft?
V2: Welche Joomla-Version läuft?
V3: Welche PHP-Version läuft?

Listbox SQL: value oder label als Platzhalter im E-Mail-Text nutzen

Mehr
1 Jahr 6 Monate her #9322 von MaliRaj
Hallo Aicha, Hallo Ingmar,
Ein Feld vom Typ Listbox SQL (selectsql) mit dem Namen 'summe' enthält bei mir als value = 220.7 (Berechnug aus der Datenbank), und als label = 220,70 € (entsprechend formatiert/ersetzt/ergänzt). Im Formular selbst und auf der Zusammenfassungsseite wird das so auch formatiert angezeigt. In meinen E-Mail-Texten möchte ich natürlich auch die formatierte Version benutzen. Allerdings führt sowohl ${summe|DISPLAYOPTIONVALUE} als auch ${summe} immer zu '220.7'. Bei {$summe} hätte ich '220,70 €' erwartet.
Bei anderen Feldtypen ist mir das (Fehlverhalten?) nicht aufgefallen.

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)

Mehr
1 Jahr 5 Monate her - 1 Jahr 5 Monate her #9366 von Administrator IV
Hallo Heinz,

dieses Verhalten ist bekannt und bislang so gewollt.
Mit allen SQL-Feldern gibt es bezüglich dem Label ein grundsätzliches Problem.

In der Datenbank wird in der Datentabelle für alle Felder immer allein der (Options-)Value gespeichert.
Bei statischen Options-Listen, sind alle Options-Label in der Feld-Konfiguration gespeichert und können bei der Platzhalter-Ersetzung verwendet werden.

Bei SQL-Feldern werden die Options-Label nicht in der Feld-Konfiguration gespeichert, da sie erst bei der Anzeige des Formulars dynamisch durch Ausführung des SQL-Statements erzeugt werden.

Bislang gibt es noch keinen Mechanismus, der die Options-Label von SQL-Feldern zum Zeitpunkt der Parameter-Ersetzung zur Verfügung stellt.
Das kann auch durchaus schief gehen bzw. gar nicht möglich sein:
- der Laufzeitkontext ist ein anderer und Parameter daraus können fehlen oder andere Werte haben
- die Daten, auf das sich das SQL-Statement bezieht, können sich geändert haben
- u.s.w

Außerdem macht es einen großen Unterschied, zu welchem Zeitpunkt die Parameter-Ersetzung abläuft:
- unmittelbar nach Absenden des Formulars (E-Mail, PDF-Anhang, PDF-Link): Feld-Werte kommen aus der User-Session
- zeitlich versetzt (PDF-Erzeugung als Administrator): Feld-Werte kommen aus der Daten-Tabelle

Ich habe trotzdem mal einen Issue zur Entwicklung für die Wunschliste angelegt:
Issue [VF-830] Forum: SQL-Fields: Provide SQL-based option-labels to parameter replacement (as far as possible)

Wie und wann wir das realisieren können, ist im Moment nicht abzuschätzen.
Wenn wir das neue Feature releasen, wirst du explizit über das Release hier im Thema informiert.
Vielen Dank nochmal für deinen Vorstoß!

Es gibt für dich aber durchaus einen Workaround.

Mit folgendem kurzen PHP-Code, plaziert in einem Visforms Custom-Plugin, kannst du für ein gegebenes Formular (ID) und für ein gegebenes Feld (ID) das Ausgabeformat beeinflussen.
Der Code reagiert auf beide E-Mail Typen Ergebnis-Mail (resultmail) und Benutzer-Mail (receiptmail).
Code:
public function onVisformsBeforeEmailPrepare($context, $form): bool {     // context = 'com_visforms.form.resultmail'     // context = 'com_visforms.form.receiptmail'     // triggered in VisformsModel before the mail object is instantiated:     // can be used to modify the form object (i.e. to stop sending the mail or change addresses)     if($form->id == 2) {         $field = $this->getFieldByID($form, 84);         // german notation without thousands separator         $field->dbValue = number_format($field->dbValue, 2, ',', '') . ' €';     }     return true; }
Beispiel: Aus 1000 wird dann 1000,00 € im Mail-Text.

In der Dokumentation wird beschrieben, wie ein 'Visforms Custom Plugin' erstellt werden kann:
docs.joomla-4.visforms.vi-solutions.de/d...-plugin-development/
docs.joomla-4.visforms.vi-solutions.de/d...-plugin-development/

Der Entwickler kann dann selbst entscheiden, was zusätzlich alles geschehen soll.
Die Erstellung eines Custom-Plugins erfordert etwas Erfahrung in der PHP-Entwicklung unter Joomla.

Falls du Hilfe bei der Entwicklung des Plugins benötigst, dann können wir dich gerne dabei unterstützen - auch mit der kompletten Implementierung.
Bitte habe Verständnis dafür, dass wir diesen Aufwand zu unserem aktuellen Stundensatz berechnen müssen.

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).
Letzte Änderung: 1 Jahr 5 Monate her von Administrator IV.

Mehr
1 Jahr 5 Monate her #9369 von MaliRaj
Mit dem Workaround komme ich gut zurecht. Vielen Dank für den Tipp dieser Möglichkeit. Da kann ich im Grunde das gleiche SQL-STATEMENT laufen lassen. Funktioniert bei den selbst erstellten PDF's bisher auch ganz gut. 

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum