2016-07-06 4 views
0

Ich möchte Anfang/Ende der OOTB CQ5-Benutzerformularkomponente anpassen, um mit bestimmten benutzerdefinierten Komponenten zu beginnen, die vorbelegt sind, wenn die 'Formular'-Komponente auf den/gezogen wird Seite.cq: Include-Standardkomponenten im CQ-Formular mit Servervalidierung

Ich habe derzeit eine überlegte/apps/foundation/komponenten/formelemente mit start/end/aktionen angepasst. Aber ich finde heraus, wie man eine Komponente, die zur FORM-Gruppe gehört, zum Formularanfang hinzufügt ....... Ende auf die Seite, wenn ein Formular zur Seite hinzugefügt wird.

I hat versucht, ein <cq:include path= "customComp" resourceType="/pathto/customComponent" /> an die JSP der form-end Komponente verwendet, fügt dieser/zeigt die individuellen Komponenten auf der Anzeige, aber führt keinen Server-Validierungen, da es nicht ein separater Knoten zwischen dem Anfang und Ende ist Knoten die Seite, aber eine dynamisch hinzugefügte Seite.

Dies ist im Grunde um die Verwendung meiner benutzerdefinierten Captcha-Komponente zu erzwingen/Mandat immer wenn ein Formular auf einer Seite platziert wird.

Vielen Dank im Voraus!

Antwort

1

Wenn Sie die Formularerstellung vollständig dem Autor überlassen möchten (wie bei OOTB-Komponenten vorgesehen), gibt es keine einfache Möglichkeit, sich in eine obligatorische Captcha-Komponente einzuschleichen. Sogar Wenn Sie die Captcha-Komponente eingefügt haben, kann der Autor es einfach löschen oder aus Ihrem Absatzsystem verschieben.

Das Captcha mit Form-End zu vermischen könnte möglich sein, aber nicht ohne die Form-End-Komponente von Grund auf neu zu erfinden. Ich würde das nicht wollen.

Ich sehe drei Optionen, die für Sie hilfreich sein könnten:

  1. einen jcr Eventlistener implementieren, die ausgelöst werden, wenn ein Formular erstellt oder geändert wird. Überprüfen Sie die Formulardatenstruktur in jcr, und wenn die obligatorische Captcha-Komponente fehlt, fügen Sie sie hinzu und übernehmen Sie sie. Diese Art von Verhalten ist natürlich ein wenig zwielichtig und mag Autoren überraschen - aber es wird funktionieren.
  2. Erstellen Sie eine Wrapperformularkomponente, die ein Absatzsystem mit einem vollständig vorkonfigurierten Formular enthält, einschließlich Formularstart, Captcha und Formularende. Diese Vorgehensweise erspart den Autoren sogar ein wenig Arbeit und niemand wird das Chaptcha leicht "vergessen". Nichts wird jedoch verhindern, dass ein böser Autor die catchcha-Komponente explizit löscht.
  3. Erstellen Sie eine vollständig benutzerdefinierte Formularkomponente, die keine der OOTB-Komponenten verwendet. In diesem Szenario haben Sie die volle Kontrolle darüber, was der Autor tun kann und was nicht. Höchstwahrscheinlich werden Sie viel Flexibilität aufgeben, um Entwicklungszeit zu sparen und am Ende mit einem meist statischen Formular zu enden, in dem der Autor ein paar kritische Teile bearbeiten kann.
+0

danke für die Vorschläge. Option # 3 ist nicht möglich, da ich bereits Autoren habe, die die angepassten OOTB-Formularkomponenten verwenden. Option # 1: Wie stelle ich sicher, dass ich das Captcha unmittelbar vor der Formularende-Komponente platziere, so dass das Captcha unabhängig von den Elementen, die die Autoren auf der Seite platzieren, die letzte Komponente vor der Übergabeschaltfläche ist : hört sich gut an, wie soll ich das umsetzen, ein grobes Layout, pesudo-code wäre gut. Wenn ich die verwenden, um das Captcha durch das Formular-Ende Jsp hinzuzufügen, auch wenn der Autor versucht, das Captcha zu löschen, es knallt Backup :) – vreddy

+0

zu meinem Kommentar hinzufügen, bin wirklich in der Lage zu cq: include the catpcha am Formularende, mein Hauptproblem ist jedoch, dass - obwohl die Benutzerantwort beim Senden des Formulars gesendet wird, die serverseitige Überprüfung nicht ausgelöst wird.(wie wenn es einen physischen Form-Captcha-Knoten auf den Parsys gäbe). Gibt es einen Trick, um den Servervalidierungsmechanismus dazu zu bringen, die Captcha-Ressource der Liste der Ressourcen hinzuzufügen, die auf Servervalidierung geprüft werden? – vreddy

+1

Option # 1: Sie implementieren einen EventListener und schreiben Code, der die Formulardatenkomponentenknoten in jcr umschlingt. Sie schreiben die Logik, die nach dem Captcha sucht, und fügen es ein, wenn es fehlt. Sicherzustellen, dass das Captcha an der richtigen Stelle eingefügt wird, ist Teil Ihres Codes und wirklich einfach zu erreichen. Siehe https://docs.adobe.com/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/Node.html#orderBefore(java.lang.String,%20java.lang.String). –

Verwandte Themen