Differences

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.
 +\\
deutsch/phpwcms-system/artikel/contentparts/formular/spezielle-anwendungen/php-funktion-einbinden.1265233009.txt.gz · Last modified: 2018/06/03 18:07 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0