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 komponenterna Panel, dragspelspanel, Vågräta flikar, Lodräta flikar eller Wizard för att göra avsnitt i ett adaptivt formulär repeterbara. Du kan lägga till underordnade komponenter i dessa komponenter för att skapa upprepningsbara avsnitt i ett formulär.

Exemplen i det här dokumentet är baserade på komponenten Panel. Du kan utföra identiska steg för att göra komponenterna Panel, Accordion, Horizontal Tabs, Vertical Tabs eller Wizard 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 välj cmpr .

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

  3. Ange minsta repetitioner som krävs för minst repeterbara avsnitt. Du kan ställa in minsta repetitioner på noll om panelerna inte ska kopieras eller om de upprepade panelerna ska tas bort. Som standard är värdet för minsta repetition noll.

  4. Ange maximala upprepningar om du vill upprepa panelantalet gånger som krävs. Som standard är värdet 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 i panelens överordnade objekt. I exempelvideon nedan används en knappkomponent med etikettnamnet Add och fältnamnet AddPanel. Markera komponenten och välj edit-rules . Reglerna för knappkomponenten öppnas i regelredigeraren.

  2. Klicka på Skapa i regelredigeringsfönstret.

    Välj Visuell redigerare på raden Formulärobjekt och funktioner.

    1. I regelområdet, under WHEN, väljer du läge är klickat.
    2. Under SEDAN väljer du Lägg till instans och drar och släpper panelen med hjälp av växlingspanelen eller markerar den med Släpp objekt eller välj här.

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

    • Om du vill skapa en knapp för att lägga till panel anger du this.panel.instanceManager.addInstance()

    Klicka på 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 objekt. I videon nedan används en knappkomponent med etikettnamnet delete och fältnamnet DeletePanel. Markera komponenten och välj edit-rules . Reglerna för knappkomponenten öppnas i regelredigeraren.

  2. Klicka på Skapa i regelredigeringsfönstret.

    Välj Visuell redigerare på raden Formulärobjekt och funktioner.

    1. I regelområdet, under WHEN DeletePanel, väljer du läge som klickas.
    2. Under SEDAN väljer du Ta bort instans och drar och släpper panelen med hjälp av växlingspanelen eller markerar den med Släpp objekt eller välj här.

    Välj Kodredigeraren på raden Formulärobjekt och funktioner. Klicka på 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 på 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 API:t instances i InstanceManager. Syntaxen som ska användas för instances-API:t i 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. Mer information finns i Skapa en åtgärd.
  10. Länka formulärmallen till det anpassade formuläret. Mer information 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 adaptiva formulär med XML-schema som formulärmodell.

I följande kod använder panelen SampleTypeegenskapen minOcCours & 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