NAVIGATION
This shows you the differences between two versions of the page.
deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-funktion-einbinden [2010/02/03 22:36] Marcus Obst fixed some typo |
deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-funktion-einbinden [2018/06/03 18:08] (current) |
||
---|---|---|---|
Line 3: | Line 3: | ||
====== PHP-Funktion einbinden ====== | ====== PHP-Funktion einbinden ====== | ||
- | Seit der Release r282 ist es möglich eine eigene PHP-Funktion zwischen der Aktion "submit" und "dem Versenden der eMail" abzuarbeiten . Diese Funktion kann alle Formulareingaben lesen, verändern und zurückgeben. | + | Seit der Release r282 ist es möglich eine eigene PHP-Funktion zwischen der Aktion "submit" und "dem Versenden der eMail" abzuarbeiten . Diese Funktion kann alle Formulareingaben lesen, ändern und zurückgeben. //(Auch das Sendeziel (eMailadresse) kann verändert werden)//. |
+ | **Diese Veränderungen werden nicht in der Datenbank festgehalten, da die Werte vor dem Funktionsaufruf hineingeschrieben wurden.** | ||
+ | |||
+ | \\ | ||
Der Funktionsaufruf muss im Formular je nach Template in den Feldern **“PHP-Funktion:”** unterhalb **“Empfänger - Vorlage:“** bzw. **"Kopie an - Vorlage"** eingetragen werden. //(Siehe Bild unten)//. | Der Funktionsaufruf muss im Formular je nach Template in den Feldern **“PHP-Funktion:”** unterhalb **“Empfänger - Vorlage:“** bzw. **"Kopie an - Vorlage"** eingetragen werden. //(Siehe Bild unten)//. | ||
Line 146: | Line 149: | ||
Es wird zuerst die Funktion für die **"Empfänger - Vorlage"** //("my_form_title_recipient_de")// und in einem zweiten Aufruf die Funktion für **"Kopie an - Vorlage"** //("my_form_title_copy_to_de")// abgearbeitet. Auf die Reihenfolge haben wir keinen Einfluss. | Es wird zuerst die Funktion für die **"Empfänger - Vorlage"** //("my_form_title_recipient_de")// und in einem zweiten Aufruf die Funktion für **"Kopie an - Vorlage"** //("my_form_title_copy_to_de")// abgearbeitet. Auf die Reihenfolge haben wir keinen Einfluss. | ||
- | Mit einem Funktionsaufruf werden autom. die die drei Arrays **$postvar, $form** und **$mail** übergeben //(Siehe unten)//. | + | Mit einem Funktionsaufruf werden autom. die drei Arrays **$postvar, $form** und **$mail** übergeben //(Siehe unten)//. |
**Beispiel:** \\ | **Beispiel:** \\ | ||
Line 158: | Line 161: | ||
Nachdem die Funktionen verlassen wurden werden die E-Mails an die eingetragenen Adressen abgesetzt. | Nachdem die Funktionen verlassen wurden werden die E-Mails an die eingetragenen Adressen abgesetzt. | ||
+ | <note> | ||
Die Datenbank wird schon vor dem Aufruf der Funktionen gefüllt, hier wird das manipulierte Ergebnis also nicht festgehalten. | Die Datenbank wird schon vor dem Aufruf der Funktionen gefüllt, hier wird das manipulierte Ergebnis also nicht festgehalten. | ||
+ | </note> | ||
+ | |||
+ | ==== Test-Script: ==== | ||
+ | |||
+ | ---- | ||
+ | \\ | ||
+ | **Datei:** template/inc_script/frontend_init/form_test.php | ||
+ | |||
+ | **Bedingung:** $phpwcms['allow_ext_init'] = 1; -> [[http://www.phpwcms-docu.de/confincphp_de.phtml|/config/phpwcms/conf.inc.php]] \\ | ||
+ | |||
+ | <code php|h form_test.php |h> | ||
+ | <?php | ||
+ | /********************************************************************************************/ | ||
+ | /** | ||
+ | * Script fur den Test der Formularfunktion | ||
+ | * | ||
+ | * 17.03.2010 (c) K.Heermann http://planmatrix.de | ||
+ | */ | ||
+ | /********************************************************************************************/ | ||
+ | // ------------------------------------------------------------------------------------------- | ||
+ | // obligate check for phpwcms constants | ||
+ | if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day."); } | ||
+ | // ------------------------------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | /** For testing form function | ||
+ | =============================================================================== | ||
+ | =============================================================================== | ||
+ | */ | ||
+ | function form_test( &$postvar, &$form, &$mail ) { | ||
+ | |||
+ | echo '<br>===== postvar ===========================<br>'; | ||
+ | dumpVar($postvar); | ||
+ | |||
+ | echo '<br>===== form ==============================<br>'; | ||
+ | dumpVar($form); | ||
+ | |||
+ | echo '<br>===== mail ==============================<br>'; | ||
+ | // Sicherheitsrisiko wenn vergessen wird das Script nach Beendigung der Arbeiten zu entfernen. | ||
+ | // Ist für die meisten Anwendungen auch uninteressant. | ||
+ | // dumpVar($mail); | ||
+ | echo '<br>===== mail ende =========================<br>'; | ||
+ | |||
+ | } // ==== End function | ||
+ | /* | ||
+ | =============================================================================== | ||
+ | =============================================================================== | ||
+ | */ | ||
+ | |||
+ | ?> | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | \\ | ||
==== Inhalt: $postvar ==== | ==== Inhalt: $postvar ==== | ||
Line 166: | Line 227: | ||
In $postvar sind alle angelegten Felder des Formulars mit dem aktuellen Inhalt hinterlegt. Hierzu zählen auch die Felder, die in den Vorlagen nicht eingesetzt werden. Z.B. ein verstecktes //(hidden)// Feld um einen Wert/Status vom ersten Aufruf des Scriptes "my_form_title_recipient_de" zum zweiten Aufruf "my_form_title_copy_to_de" zu übergeben. | In $postvar sind alle angelegten Felder des Formulars mit dem aktuellen Inhalt hinterlegt. Hierzu zählen auch die Felder, die in den Vorlagen nicht eingesetzt werden. Z.B. ein verstecktes //(hidden)// Feld um einen Wert/Status vom ersten Aufruf des Scriptes "my_form_title_recipient_de" zum zweiten Aufruf "my_form_title_copy_to_de" zu übergeben. | ||
+ | |||
+ | <note> | ||
+ | **$postvar** wird nur ausgegeben, wenn ##[X] Formularergebnis speichern## eingeschaltet ist, da hier die schon abgespeicherten Daten aus der DB angezeigt werden. \\ | ||
+ | Eine Änderung diese Daten ist nicht möglich //(hat keinerlei Auswirkung auf die DB oder dem Versandergebnis)//. | ||
+ | </note> | ||
<code php|h Ausgabe $postvar |h> | <code php|h Ausgabe $postvar |h> | ||
Line 530: | Line 596: | ||
- | // Output e-Mail text // Ausgabe E-Mailtext | + | // Output e-Mail text "on success" // Ausgabe E-Mailtext in "bei Erfolg:" |
// --------------------------------------------------------------- | // --------------------------------------------------------------- | ||
$email_text = '<div style="width:510px; padding:10px; margin:10px; border:1px dotted #666; background:#eee;">'; | $email_text = '<div style="width:510px; padding:10px; margin:10px; border:1px dotted #666; background:#eee;">'; | ||
Line 588: | Line 654: | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== Ausgabe des E-Mailtextes (To) auf der Folgeseite ===== | ||
+ | |||
+ | Das BE Eingabefeld "**Bei Erfolg:**" wird im Script mit dem E-Mailtext aus To //(Empfänger - Vorlage)// der **Variablen $form['template']** gefüllt. Dazu schreiben wir einfach den Text, eingebettet in ein wenig Formatierung, aus **$form['template']** in die **Variable $form['onsuccess']**. \\ | ||
+ | Darüberhinaus wird noch ein Link //(weiter)// zur aktuelle Seite //(Formular)// generiert. | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | \\ | ||
====== Nutzen der i18n @@Replacementsags@@ in Emails, für mehrsprachige Seiten ====== | ====== Nutzen der i18n @@Replacementsags@@ in Emails, für mehrsprachige Seiten ====== | ||
- | Das oben beschriebene Verfahren kann sehr einfach dazu eingesetzt werden, um E-Mail Text mit Hilfe der i18n Funktion [[http://www.phpwcms-howto.de/wiki/doku.php/deutsch/ersetzer_rts/integrierte-tags/sprach-tags/i18n]] von phpwcms zu übersetzten. | + | Das oben beschriebene Verfahren kann sehr einfach dazu eingesetzt werden, um E-Mail Text mit Hilfe der i18n Funktion [[deutsch/ersetzer_rts/integrierte-tags/sprach-tags/i18n]] von phpwcms zu übersetzten. |
Angenommen wir schreiben folgende E-Mail Vorlage: | Angenommen wir schreiben folgende E-Mail Vorlage: | ||
- | @@Firma@@: {firma} | + | @@Firma@@: {firma} \\ |
@@Betreff@@: {subject} | @@Betreff@@: {subject} | ||
- | und möchten @@Firma@@ für englischsprachige E-Mail Empfänger (z.B. für die E-Mail Kopie) als "Company" bzw @@Betreff@@ als "Subject" in der E-Mail stehen haben. | + | und möchten @@Firma@@ für englischsprachige E-Mail Empfänger //(z.B. für die E-Mail Kopie)// als "Company" bzw. @@Betreff@@ als "Subject" in der E-Mail stehen haben. |
Dann hilft folgende simple Funktion: | Dann hilft folgende simple Funktion: | ||
Line 609: | Line 688: | ||
</code> | </code> | ||
- | **email_i18n_substitute_text** muss dann als Funktion im Backend/Formular CP, wie oben beschrieben registriert werden. | + | \\ |
+ | **email_i18n_substitute_text** muss dann als Funktion im Backend/Formular CP, wie oben beschrieben registriert werden. \\ | ||
Natürlich muss auch die entsprechende Sprachdatei dazu übersetzt werden. | Natürlich muss auch die entsprechende Sprachdatei dazu übersetzt werden. | ||
+ | \\ | ||