Version | Artikellänk |
---|---|
AEM 6.5 | Klicka här |
AEM as a Cloud Service | Den här artikeln |
Ett upprepningsbart avsnitt avser en del av ett formulär som kan dupliceras eller upprepas flera gånger för att samla in information för flera instanser av samma data.
Ta till exempel ett formulär som används för att samla in information om en persons arbetsupplevelse. Du kan ha ett upprepningsbart avsnitt där du kan hämta information om varje föregående jobb. Det repeterbara avsnittet innehåller vanligtvis fält som företagsnamn, befattning, anställningsdatum och ansvarsområden. Användaren kan lägga till flera instanser av det repeterbara avsnittet för att ange information om varje jobb som han/hon har utfört.
I slutet av den här artikeln lär du dig att:
Du kan använda Panel, Dragspel, Vågräta flikar, eller guide -komponenter för att göra avsnitt i en adaptiv form repeterbara. Du kan lägga till underordnade komponenter till panelen, dragspelspanelen, vågräta flikar eller guidekomponenter för att skapa upprepningsbart avsnitt i ett formulär.
Exemplen i det här dokumentet är baserade på Panel -komponenten. Du kan utföra identiska steg för att göra Dragspel, Vågräta flikaroch guide komponenter repeterbara.
Om du vill upprepa en panel i formuläret eller ta bort repeterbara paneler använder formulärförfattaren en knappkomponent för att lägga till eller ta bort en instans av panelen. Så här lägger du till eller tar bort repeterbara avsnitt (paneler) i ett formulär:
Så här gör du en panel upprepningsbar:
Välj en panelbehållare och markera .
Klicka på upprepningspanel och växla gör panelen upprepningsbar.
Ange minsta repetitioner som krävs för minst repeterbara avsnitt kan du ange minsta repetitioner till noll för att inte hämta paneler eller för att ta bort de upprepade panelerna. Som standard är värdet för minsta repetition noll.
Ange maximalt antal upprepningar om du vill upprepa panelens antal gånger som krävs är värdet som standard oändligt.
Panelens överordnade objekt som ska upprepas bör innehålla en Lägg till-knapp för att hantera upprepad instans av panelen. Följ de här stegen för att infoga knappar i det överordnade objektet och aktivera skript på knapparna:
Lägg till en knappkomponent till panelens överordnade panel. I exempelvideon nedan är det en knappkomponent med etikettnamnet Lägg till och fältnamn AddPanel, används. Markera komponenten och markera . Reglerna för knappkomponenten öppnas i regelredigeraren.
Klicka på Skapa.
Välj Visual Editor på raden Formulärobjekt och -funktioner.
Välj Kodredigeraren på raden Formulärobjekt och -funktioner. Klicka Redigera regler och i kodområdet:
this.panel.instanceManager.addInstance()
Klicka Klar.
Panelens överordnade panel bör innehålla en borttagningsknapp för att ta bort en instans av de repeterbara panelerna. Följ de här stegen för att infoga knappar i det överordnade objektet och aktivera skript på knapparna för att ta bort repeterbara paneler:
Lägg till en knappkomponent till panelens överordnade, i videon nedan, en knappkomponent med etikettnamnet delete och fältnamn DeletePanel används. Markera komponenten och markera . Reglerna för knappkomponenten öppnas i regelredigeraren.
Klicka på Skapa.
Välj Visual Editor på raden Formulärobjekt och -funktioner.
Välj Kodredigeraren på raden Formulärobjekt och -funktioner. Klicka Redigera regler och i kodområdet:
this.panel.instanceManager.removeInstance(this.panel.instanceIndex)
Klicka Klar.
Om ett fält tillhör en repeterbar panel kan du inte komma åt det direkt med dess namn i skripten. Om du vill komma åt fältet anger du den repeterbara instans som fältet tillhör med instances
API in InstanceManager
. Syntaxen som ska användas instances
API in InstanceManager
är:
<panelName>.instanceManager.instances[<instanceNumber>].<fieldname>
Du kan till exempel skapa ett anpassat formulär med en upprepningsbar panel med en textruta. När du fyller i formuläret i förväg med tre repeterbara textrutor behöver du XML-koden nedan:
<panel1><textbox1>AA1</panel1></textbox1>
<panel1><textbox1>AA2</panel1></textbox1>
<panel1><textbox1>AA3</panel1></textbox1>
Om du vill läsa AA1-data anger du:
Panel1.instanceManager.instances[0].textbox.value
Om du vill läsa AA2-data anger du:
Panel1.instanceManager.instances[1].textbox.value
När alla instanser av en panel tas bort från ett adaptivt formulär kan du lägga till en instans av den borttagna panelen med syntaxen _panelName för att fånga instanshanteraren på panelen och använda API:t addInstance för instanshanteraren för att lägga till den borttagna instansen. Till exempel _panelName.addInstance(). En instans av den borttagna panelen läggs till.
Upprepningsbart delformulär liknar de repeterbara panelerna i Adaptiv Forms. Gör så här i AEM Forms Designer för att skapa ett upprepande delformulär:
Den bifogade ZIP-filen innehåller ett exempel på upprepningsbart delformulär.
Du kan skapa upprepningsbara paneler från ett XML-schema och från egenskapen minOcCours & maxOccurs för alla komplexa tytelement. Mer information om XML-schema finns i Skapa anpassningsbara formulär med XML-schema som formulärmodell.
I följande kod visas SampleType
I panelen används egenskapen minOcCours och maxOccurs.
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="https://adobe.com/sample.xsd"
xmlns="https://adobe.com/sample.xsd"
xmlns:xs="https://www.w3.org/2001/XMLSchema"
>
<xs:element name="sample" type="SampleType"/>
<xs:complexType name="SampleType">
<xs:sequence>
<xs:element name="leaderName" type="xs:string" default="Enter Name"/>
<xs:element name="assignmentStartDate" type="xs:date"/>
<xs:element name="gender" type="GenderEnum"/>
<xs:element name="noOfProjectsAssigned" type="IntType"/>
<xs:element name="assignmentDetails" type="AssignmentDetails"
minOccurs="0" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AssignmentDetails">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="durationOfAssignment" type="xs:unsignedInt" use="required"/>
<xs:attribute name="numberOfMentees" type="xs:unsignedInt" use="required"/>
<xs:attribute name="descriptionOfAssignment" type="xs:string" use="required"/>
<xs:attribute name="financeRelatedProject" type="xs:boolean"/>
</xs:complexType>
<xs:simpleType name="IntType">
<xs:restriction base="xs:int">
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="GenderEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="Female"/>
<xs:enumeration value="Male"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>