Neueste Subscription Feature

Mehr erfahren

Feldtyp Signatur

Mehr erfahren

Feldtyp Standort

Mehr erfahren

Feldtyp Berechnung

Mehr erfahren

Mehrseitige Formulare

Visforms, Caching und die Meldung "Sorry, das Formular kann nur ein Mal abgeschickt werden"

Visforms hat einen Schutzmechanismus, der verhindern soll, das ein Formular aus versehen mehr als einmal abgeschickt wird. Hierzu wird, wenn das Formular über den Visformscode zur Anzeige gebracht wird, eine Variable gesetzt. Wird das Formular abgeschickt, schaut der Code, ob die Variable gesetzt ist. Ist das nicht der Fall wird das Abschicken abgebrochen und der Fehler "Sorry, das Formular kann nur einmal abgeschickt werden" angezeigt. Ist die Variable gesetzt wird das Formular verschickt und die Variable gelöscht.

Bei einer kleinen Anzahl von Visforms Nutzer kommt es vor, dass die Meldung auch dann angezeigt wird, wenn das Formular scheinbar korrekt nur einmalig abgeschickt wird. Eine Ursache hierfür kann die Konfiguration des Joomla! Caches auf Ihrer Webseite sein, deren Einstellungen nicht alle kompatible mit Visforms sind.

Als erstes ist einmal zu sagen, dass Formulare sich natürlich nicht gut zum Cachen eignen und Visforms auch so geschrieben ist, dass es das Cachen von Formularen unterbindet. Allerdings gibt es bei der Kofiguration des Joomla! Cache-Einstellung, die mit Visforms nicht kompatibel sind.

Zwei Arten von Cache

Joomla! bietet unterschiedliche Stellen um Cache-Konfigurationen vorzunhemen.

Das System Plugin Cache

Auf der einen Seite gibt es ein System Plugin Cache. Dieses Plugin legt, wenn es aktiviert ist, von jeder Seite, wenn Sie einmal aufgerufen wird, einen Cache an, der die Seite eins zu eins enthält. Wird die Seite das nächste Mal aufgerufen, dann wird einfach nur das gecachte Dokument genommen und angezeigt. Die eigentliche Componente (Visforms), wird überhaupt nicht mehr angefasst und die im Code verankerte Einstellung, dass nicht gecacht werden soll, deshalb nicht gesehen. D.h. auch die Variable, die beim Aufruf des Formulars über den Visformscode gesetzt wurde und die ein mehrfaches Abschicken der Seite verhinder soll, wird nicht gesetzt. Deshalb schlägt das Abschicken des Formulars mit obiger Fehlermeldung fehl.

Bitte deaktivieren Sie das System Plugin Cache, wenn Sie auf Ihrer Webseite Visforms in einer Version unter 3.6.6 verwenden.

Die System Konfiguration Cache

Auf der anderen Seite gibt es die Cache Einstellungen der System Konfiguration. Dieses Caching hat erst einmal nichts mit dem Plugin zu tun und funktioniert auch dann, wenn das Plugin abgestellt ist. Gecacht werden dann die Standard Joomla! Komponenten, aber nicht einfach jede Seite. Bei der Einstellung "Konservatives Caching" wird Visforms dann wie gewünscht nicht gecacht.

Die Aktivierung des Konservativen Cachings in der System Konfiguration ist kompatible mit Visforms es sei denn, Sie verwenden Formulare, die mit Hilfe von Content Plugins in Artikeln angezeigt werden.

Caching bei der Verwendung von Formularen in Artikel

Wird ein Formular mit Hilfe des Moduls Visforms und des Joomla! Plugin Loadposition oder unseres Content Plugins vfformview in einen Artikel eingebaut, wird der Artikel und damit das Formular auch dann gecacht, wenn nur der Cache in der System Konfiguration aktiviert ist. In diesem Fall müssen Sie weitergehende Maßnahmen ergreifen. Sie können entweder eine Joomla! Erweiterung wie das Plugin CacheControl verwenden, mit dessen Hilfe Sie das Caching der Seite, die den Artikel mit dem Formular enthält, differenziert verhindern können oder Sie müssen zum derzeitigen Zeitpunkt auf das Aktivieren des Cachings ganz verzichten.

Andere Gründe für die Nachricht "Sorry, das Formular kann nur ein Mal abgeschickt werden"

Wenn Sie einen Meneintrag vom Typ Visforms angelegt haben und Visforms auf Ihrer Webseite deinstallieren, bleibt dieser Menüeintrag erhalten. Joomla! zeigt in der Menüeintragsliste an, dass das Menü "deaktiviert" sei und zeigt beim Menüeintrag eine kleine Meldung "Komponente existiert nicht". Der Menüeintrag wird jedoch weiterhin im Frontend angezeigt. Wenn Sie Visforms erneut installieren und ein Formular anlegen, das zufällig dieselbe ID hat, wie das Formular auf das der alte Menüeintrag verlinkt hat, dann wird das Formular im Frontend korrekt angezeigt, aber wenn Sie das Formular abschicken erhalten Sie die Nachricht "Sorry, das Formular kann nur ein Mal abgeschickt werden". Um das Problem zu beheben, müssen Sie in der Adminstration den Visforms Menüeintrag öffnen und einfach ein mal speichern. Das behebt dieses Problem.

Neu in Visforms 3.6.6

In Visforms 3.6.6 haben wir die Kompatiblität der Komponente mit den Joomla! Cache Einstellungen noch einmal verbessert. Insbesondere wird nun das Caching des Visforms Moduls so weit wie möglich unterbunden

Mit Visforms 3.6.6 können Sie Visforms Formulare verwenden auch wenn das System Cache Plugin aktiviert ist.

Dies funktioniert bei der Anzeige des Formulars über einen Menüeintrag oder in einen Visforms Modul.

Sie können das Caching in der System Konfiguration auf "Konservatives Caching" stellen.

Dies funktioniert bei der Anzeige des Formulars über einen Menüeintrag oder in einen Visforms Modul.

Die Verwendung von "Progessivem Caching" mit Visforms ist nicht möglich, denn diese Einstellung ist nicht dafür gemacht mit Formularen zusammenzuarbeiten.

Wenn Sie mehr über die unterschiedlichen Cache Optionen und ihre Auswirkung auf das Ladeverhalten von Modulen erfahren wollen, empfehle ich diesen (englischsprachigen) Artikel, den ich sehr informativ fand: http://www.inmotionhosting.com/support/edu/joomla-25/caching/global-module-caching.

Wenn Sie ein Formular in einem Beitrag anzeigen wollen (mit Hilfe unseres Content Plugins vfformview oder unter Verwendung der loadposition Methode von Joomla!) und gleichzeitig den Joomla! Cache verwenden wollen, dann ist dies nach wie vor nur mit Hilfe einer Joomla! Erweiterung möglich. Ich empfehle das bereits oben erwähnte Plugin CacheControl, das es Ihnen sehr einfach und effektiv ermöglicht bestimmte Seiten vom Caching auszuschließen.

Plugin CacheControl.

Wenn Sie unser Content Plugin vfformview verwenden um ein Formular in einem Modul vom Typ "eigenes HTML" anzuzeigen, dann ist es ausreichend die Cache Option des Moduls vom Typ "eigenes HTML" auf "Kein Caching" zu setzen (Reiter "Erweitert").

Zur Beitragsliste