Skapa formulär med repeterbara avsnitt (kärnkomponenter) repeat-panel

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.

Repeterbarhet

I slutet av den här artikeln lär du dig att:

  • Skapa ett upprepningsbart avsnitt i en adaptiv form
  • Ange minsta eller högsta antal upprepningar för en adaptiv formulärkomponent
  • Använd regelredigeraren för att konfigurera åtgärder för tillägg eller borttagning för repeterbara avsnitt

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.

Lägga till eller ta bort repeterbara avsnitt i ett formulär add-or-delete-repeatable-section-in-panel-container

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:

Gör panelbehållaren upprepningsbar make-panel-container-repeatable

Fliken Tillgänglighet

Så här gör du en panel upprepningsbar:

  1. Välj en panelbehållare och markera cmppr .

  2. Klicka på upprepningspanel och växla gör panelen upprepningsbar.

  3. 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.

  4. Ange maximalt antal upprepningar om du vill upprepa panelens antal gånger som krävs är värdet som standard oändligt.

    note note
    NOTE
    • Minsta repetition får inte vara -ve-värde.
    • Om du vill skapa en panel som inte är upprepningsbar anger du ett värde för det högsta och lägsta fältet.

Lägga till upprepningsbart avsnitt med instanshanteraren (via skript) add-repeatable-section-using-instance-manager-via-scripts

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:

  1. 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 edit-rules . Reglerna för knappkomponenten öppnas i regelredigeraren.

  2. Klicka på Skapa.

    Välj Visual Editor på raden Formulärobjekt och -funktioner.

    1. Välj läge under WHEN i regelområdet klickas.
    2. Under SEN väljer du Lägg till instans och dra och släpp panelen med växlingspanel eller markera med Släpp objekt eller välj här.

    Välj Kodredigeraren på raden Formulärobjekt och -funktioner. Klicka Redigera regler och i kodområdet:

    • Om du vill skapa en knapp för panelen Lägg till anger du this.panel.instanceManager.addInstance()

    Klicka Klar.

Ta bort repeterbara avsnitt med instanshanteraren (via skript) delete-repeatable-section-using-instance-manager-via-scripts

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:

  1. 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 edit-rules . Reglerna för knappkomponenten öppnas i regelredigeraren.

  2. Klicka på Skapa.

    Välj Visual Editor på raden Formulärobjekt och -funktioner.

    1. I regelområdet, under WHEN DeletePanel, välj läge klickas.
    2. Under SEN väljer du Ta bort instans och dra och släpp panelen med växlingspanel eller markera med Släpp objekt eller välj här.

    Välj Kodredigeraren på raden Formulärobjekt och -funktioner. Klicka Redigera regler och i kodområdet:

    • Om du vill skapa en knapp för borttagningspanelen anger du this.panel.instanceManager.removeInstance(this.panel.instanceIndex)

    Klicka Klar.

NOTE
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
NOTE
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.

Använda upprepade delformulär från formulärmallen (XDP/XSD) using-repeating-subforms-from-form-template-xdp-xsd

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:

  1. Markera det överordnade delformuläret för det delformulär som du vill upprepa på paletten Hierarki.
  2. Klicka på fliken Delformulär på paletten Objekt och välj Flödat i listan Innehåll.
  3. Markera delformuläret som ska upprepas.
  4. Klicka på fliken Delformulär på paletten Objekt och välj antingen Placerat eller Flödat i listan Innehåll.
  5. Klicka på fliken Bindning och välj Upprepa delformulär för varje dataobjekt.
  6. Om du vill ange det minsta antalet upprepningar väljer du Minsta antal och skriver ett tal i den associerade rutan. Om det här alternativet är inställt på 0 och inga data anges för objekten i delformuläret vid datasammanfogning, placeras inte delformuläret när formuläret återges.
  7. Om du vill ange maximalt antal upprepningar av delformulär väljer du Max och skriver ett tal i den tillhörande rutan. Om du inte anger något värde i rutan Max är antalet delformulärrepetitioner obegränsat.
  8. Om du vill ange ett visst antal upprepningar av delformulär, oavsett datamängd, väljer du Antal initialer och skriver ett tal i den tillhörande rutan. Om du väljer det här alternativet och antingen inga data är tillgängliga eller det finns färre data än det angivna värdet för antal initialer, placeras tomma instanser av delformuläret fortfarande i formuläret.
  9. Lägg till två knappar i det överordnade delformuläret - en för att lägga till en instans och en för att ta bort en instans av det repeterbara delformuläret. Detaljerade anvisningar finns i Bygg en åtgärd.
  10. Länka formulärmallen till det anpassade formuläret. Detaljerade anvisningar finns i Skapa ett anpassat formulär baserat på en mall.
  11. Använd knapparna i steg 9 för att lägga till och ta bort delformulär.

Den bifogade ZIP-filen innehåller ett exempel på upprepningsbart delformulär.

Hämta fil

Använda upprepade inställningar för ett XML-schema (XSD) using-repeat-settings-of-an-xml-schema-xsd-br

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 SampleTypeI 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>

Se även see-also

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab