Joomla 5 Notice

We are pleased to announce that as of January 29, 2024, all of our Joomla extensions are compatible with Joomla 5.

For all who are still updateing from Joomla 3 to Joomla 4: Joomla 4 Migration instructions are available here:

There is now a separate Documentation for Visforms for Joomla 4 and for Visforms for Joomla 5!

Forum

Visforms Subscription user can ask questions in our forum. Please log in with the relevant user first.
Everybody can access the forum for reading.

Please only ask 1 question per topic.

Important information for almost every question:
V1: Which Visforms version is running?
V2: Which Joomla version is running?
V3: Which PHP version is running?

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

More
1 year 6 months ago #9322 by 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)

More
1 year 5 months ago - 1 year 5 months ago #9366 by 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 :-).
Last edit: 1 year 5 months ago by Administrator IV.

More
1 year 5 months ago #9369 by 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)

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum