Hallo Ingmar, nachdem ich mich nun etwas eingelesen und eingearbeitet habe, komme ich mit XAMPP, VS Code, und XDebug ganz gut zurecht. Das erleichtert das Debuggen ja enorm. So konnte ich den Fehler auch gut finden und beheben. Folgenden Code benutze ich, um für alle meine Formulare separate Script-Dateien nutzen zu können:
Code:
public function onVisformsEmailPrepare($context, $mail, $form): bool
{
// triggered in VisformsModel after the mail object is instantiated and directly before the mail is sent:
// can be used to modify the mail object: mail object is instantiated and all properties are set and can be modified
// Skip plugin if context is wrong (bei Benutzer- & Ergebnis-Mail)
if (($context != 'com_visforms.form.receiptmail') && ($context != 'com_visforms.form.resultmail')) {
return true;
}
$app = Factory::getApplication();
// only perform action, if we are in front end
if ($app->isClient('administrator')) {
return true;
}
$file = __DIR__.'\\Helper\\'.__FUNCTION__.'_'.$form->id.'.php';
if (file_exists($file)) include_once($file);
return true;
}
Meine Scripte liegen im Ordner /Helper und sind nach den jeweiligen Visforms-Events benannt, denen die Formular_ID angehängt ist. Das funktioniert für alle Events übersichtlich und gut, außer bei onVisformsEmailPrepare und onVisformsBeforeEmailPrepare, die ja 2x aufgerufen werden. Das hatte ich nicht bedacht. Die kleine Änderung von include_once in include brachte dann das gewünschte Verhalten. Mit VS Code konnte ich gut erkennen, wo mein Script "falsch abbog".
Fazit: Debuggen kann auch Spaß machen
Vielen Dank für die wertvolle Hilfe