Anpassade funktioner i Adaptive Forms (Core Components)
Introduktion
I AEM Forms 6.5 introducerades möjligheten att definiera JavaScript-funktioner som kan användas för att definiera komplexa affärsregler med regelredigeraren. AEM Forms har ett antal anpassade funktioner som du kan använda, men du måste definiera egna funktioner och använda dem i flera formulär.
Med de anpassade funktionerna kan man bättre hantera blanketterna genom att underlätta hanteringen och bearbetningen av inmatade data. De möjliggör också dynamisk ändring av formulärbeteende baserat på fördefinierade kriterier.
I Adaptiv Forms kan du använda anpassade funktioner i regelredigerare för ett anpassat formulär för att skapa specifika valideringsregler för formulärfält.
Låt oss förstå hur den anpassade funktionen används där användare anger e-postadressen och du vill se till att den angivna e-postadressen har ett visst format (den innehåller symbolen"@" och ett domännamn). Skapa en anpassad funktion som"ValidateEmail", som tar e-postadressen som indata och returnerar true om den är giltig och i annat fall false.
function ValidateEmail(inputText)
{
var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if(inputText.value.match(email))
{
alert("Valid email address!");
return true;
}
else
{
alert("Invalid email address!");
return false;
}
}
I ovanstående exempel anropas den anpassade funktionen "ValidateEmail" för att kontrollera om den angivna e-postadressen är giltig när användaren försöker skicka formuläret.
Användning av anpassade funktioner uses-of-custom-function
Fördelarna med att använda anpassade funktioner i Adaptive Forms är:
- Hantering av data: Anpassade funktioner hanterar och bearbetar data som anges i formulärfälten.
- Validering av data: Med anpassade funktioner kan du utföra anpassade kontroller av formulärindata och tillhandahålla angivna felmeddelanden.
- Dynamiskt beteende: Med anpassade funktioner kan du styra formulärens dynamiska beteende baserat på specifika villkor. Du kan till exempel visa/dölja fält, ändra fältvärden eller justera formulärlogiken dynamiskt.
- Integrering: Du kan använda anpassade funktioner för att integrera med externa API:er eller tjänster. Det hjälper till att hämta data från externa källor, skicka data till externa Rest-slutpunkter eller utföra anpassade åtgärder baserade på externa händelser.
JS-anteckningar som stöds
Se till att den anpassade funktionen som du skriver åtföljs av jsdoc
ovan, om du behöver en anpassad konfiguration och beskrivning. Det finns flera sätt att deklarera en funktion i JavaScript,
och kommentarer gör att du kan hålla reda på funktionerna. Mer information finns i usejsdoc.org.
Stöds jsdoc
taggar:
-
Privat
Syntax:@private
En privat funktion ingår inte som en anpassad funktion. -
Namn
Syntax:@name funcName <Function Name>
Alternativt,
du kan använda:@function funcName <Function Name>
eller@func
funcName <Function Name>
.funcName
är namnet på funktionen (inga blanksteg tillåts).<Function Name>
är funktionens visningsnamn. -
medlem
Syntax:@memberof namespace
Kopplar ett namnutrymme till funktionen. -
Parameter
Syntax:@param {type} name <Parameter Description>
Du kan också använda:@argument
{type} name <Parameter Description>
eller@arg
{type}
name <Parameter Description>
.
Visar parametrar som används av funktionen. En funktion kan ha flera parametertaggar, en tagg för varje parameter i ordningen för förekomst.{type}
representerar parametertyp. Tillåtna parametertyper är:- string
- tal
- boolesk
- omfång
Omfång används för att referera till fält i ett adaptivt formulär. När ett formulär använder lazy loading kan du använda
scope
för att komma åt fälten. Du kan komma åt fält antingen när fälten har lästs in eller om fälten har markerats som globala.Alla andra parametertyper kategoriseras under någon av ovanstående. Ingen stöds inte. Välj en av typerna ovan. Typer är inte skiftlägeskänsliga. Blanksteg tillåts inte i parametern
name
.<Parameter Descrption>
<parameter> can have multiple words. </parameter>
-
Returtyp
Syntax:@return {type}
Du kan också använda@returns {type}
.
Lägger till information om funktionen, till exempel dess mål.
{type} representerar funktionens returtyp. Följande returtyper tillåts:- string
- tal
- boolesk
Alla andra returtyper kategoriseras under en av ovanstående. Ingen stöds inte. Välj en av typerna ovan. Returtyperna är inte skiftlägeskänsliga.
-
Detta
Syntax:@this currentComponent
Använd @this för att referera till den adaptiva formulärkomponenten som regeln är skriven för.
Följande exempel baseras på fältvärdet. I följande exempel döljer regeln ett fält i formuläret. The
this
del avthis.value
refererar till den underliggande adaptiva formulärkomponenten, som regeln är skriven för.code language-none /** * @function myTestFunction * @this currentComponent * @param {scope} scope in which code inside function will be executed. */ myTestFunction = function (scope) { if(this.value == "O"){ scope.age.visible = true; } else { scope.age.visible = false; } }
note note NOTE Kommentarer före anpassade funktioner används för sammanfattning. Sammanfattningen kan sträcka sig över flera rader tills en tagg påträffas. Begränsa storleken till en enda storlek om du vill ha en kortfattad beskrivning i regelbyggaren.
Typer som stöds för funktionsdeklaration function-declaration-supported-types
Funktionssats
function area(len) {
return len*len;
}
Den här funktionen ingår utan jsdoc
kommentarer.
Funktionsuttryck
var area;
//Some codes later
/** */
area = function(len) {
return len*len;
};
Funktionsuttryck och -programsats
var b={};
/** */
b.area = function(len) {
return len*len;
}
Funktionsdeklaration som variabel
/** */
var x1,
area = function(len) {
return len*len;
},
x2 =5, x3 =true;
Begränsning: den anpassade funktionen väljer bara den första funktionsdeklarationen från variabellistan, om den används tillsammans. Du kan använda funktionsuttryck för varje deklarerad funktion.
Funktionsdeklaration som objekt
var c = {
b : {
/** */
area : function(len) {
return len*len;
}
}
};
Skapa anpassad funktion create-custom-function
Så här skapar du en anpassad funktion:
-
Logga in
http://server:port/crx/de/index.jsp#
. -
Skapa en mapp under
/apps
mapp. Skapa till exempel en mapp med namnet somexperience-league
. -
Spara ändringarna.
-
Navigera till den skapade mappen och skapa en nod av typen
cq:ClientLibraryFolder
asclientlibs
. -
Navigera till den nyskapade
clientlibs
mapp och lägg tillallowProxy
ochcategories
egenskaper:note note NOTE Du kan ange valfritt namn i stället för customfunctionsdemo
. -
Spara ändringarna.
-
Skapa en mapp med namnet
js
underclientlibs
mapp. -
Skapa en JavaScript-fil med namnet
functions.js
underjs
mapp -
Skapa en fil med namnet
js.txt
underclientlibs
mapp. -
Spara ändringarna.
Den skapade mappstrukturen ser ut så här: -
Dubbelklicka på
functions.js
för att öppna redigeraren. Filen innehåller koden för den anpassade funktionen.
Låt oss lägga till följande kod i JavaScript-filen för att beräkna ålder baserat på födelsedatum (ÅÅÅÅ-MM-DD).code language-javascript /** * Calculates Age * @name calculateAge * @return {string} */ function calculateAge(dateOfBirthString) { var dob = new Date(dateOfBirthString); var now = new Date(); var age = now.getFullYear() - dob.getFullYear(); var monthDiff = now.getMonth() - dob.getMonth(); if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) { age--; } return age; }
-
Spara
function.js
. -
Navigera till
js.txt
och lägg till följande kod:code language-javascript #base=js functions.js
-
Spara
js.txt
-fil.
Du kan se följande anpassad funktion mapp. Hämta och installera den här mappen i AEM.
Nu kan du använda den anpassade funktionen i ditt adaptiva formulär genom att lägga till klientbiblioteket.
Lägga till klientbibliotek i ett adaptivt formulär use-custom-function
När du har distribuerat klientbiblioteket till Forms CS-miljön kan du använda funktionerna i ditt adaptiva formulär. Lägga till klientbiblioteket i ditt adaptiva formulär
-
Öppna formuläret i redigeringsläge. Om du vill öppna ett formulär i redigeringsläge markerar du ett formulär och väljer Edit.
-
Öppna innehållsläsaren och välj Guide Container som ingår i det adaptiva formuläret.
-
Klicka på egenskapsikonen för Guide Container. Dialogrutan Adaptiv formulärbehållare öppnas.
-
Öppna Basic och välj namnet på client library category från listrutan (i det här fallet väljer
customfunctionscategory
). -
Klicka Done .
Nu kan du skapa en regel som använder anpassade funktioner i regelredigeraren:
Nu ska vi förstå hur man konfigurerar och använder en anpassad funktion med Regelredigerarens anropstjänst i AEM Forms.