建立具有可重複區段的表單

可重複的區段是可動態新增或移除至表單的面板。

例如,在申請職務時,求職者提供以前的雇傭詳細資訊,如公司名稱、角色、項目和其他資訊。 所有雇主的資訊需要不同但相似的外觀部分。 在這種情況下,雇傭表提供雇主部分,並提供動態添加更多這樣的部分的選項。 這些動態新增的區段稱為可重複區段。

您可以使用下列其中一種方法來建立可重複的面板:

透過指令碼使用Instance Manager 

  1. 在編輯模式中,選取面板,然後點選cmppr。 在側欄的「屬性」下,啟用「使面板可重複​」。​指定​Maximum​和​Minimum​欄位的值。

    「最大」欄位指定某個面板在頁面上顯示的次數上限。 您可以在「計數上限」欄位中指定–1,讓面板出現無限次。

    「最小值」欄位指定表單上顯示面板的次數下限。 如果您將「最小計數」欄位設為零,之後您就可以在轉譯完成後,透過指令碼移除所有例項。

    注意

    若要建立非可重複的面板,請將「最大」和「最小」欄位的值設為一。 折疊式功能表配置不支援「最大計數」欄位中的–1。 您可以指定高數字來提供無限值的概念。

  2. 要重複的面板父級應包含新增和刪除按鈕,以管理可重複面板的例項。 執行下列步驟以將按鈕插入父級並啟用按鈕上的指令碼:

    1. 從側欄,將按鈕元件拖放至面板的上層。 選取元件,然後點選edit-rules。 按鈕的規則會在規則編輯器中開啟。

    2. 在「規則編輯器」窗口中,按一下「建立」。

      在「表單對象和函式」行中選擇​可視編輯器

      1. 在規則區域的「WHEN」下,選擇狀態​被點按

      2. 在THEN下:

        • 要建立添加面板按鈕,請選擇​添加實例,然後使用toggle-side-panel拖放面板,或使用​放置對象選擇面板,或選擇此處。
        • 要建立刪除面板按鈕,請選擇​刪除實例,然後使用toggle-side-panel拖放面板,或使用​放置對象選擇面板,或選擇此處。

      在「表單對象和函式」行中選擇​代碼編輯器。 按一下「編輯規則」,然後在程式碼區域:

      • 要建立添加面板按鈕,請指定this.panel.instanceManager.addInstance()
      • 要建立刪除面板按鈕,請指定this.panel.instanceManager.removeInstance(this.panel.instanceIndex)

      按一下​Done

      注意

      如果欄位屬於可重複面板,則無法在指令碼中使用其名稱直接存取它。 若要存取欄位,請使用InstanceManager中的instances API指定欄位所屬的可重複例項。 在InstanceManager中使用instances API的語法為:

      <panelName>.instanceManager.instances[<instanceNumber>].<fieldname>

      例如,您可以使用具有文字方塊的可重複面板來建立最適化表單。 使用三個可重複的文字方塊預先填入表單時,您需要下列xml:

      <panel1><textbox1>AA1</panel1></textbox1>

      <panel1><textbox1>AA2</panel1></textbox1>

      <panel1><textbox1>AA3</panel1></textbox1>

      要讀取AA1資料,請指定:

      Panel1.instanceManager.instances[0].textbox.value

      要讀取AA2資料,請指定:

      Panel1.instanceManager.instances[1].textbox.value

      如需詳細資訊,請參閱:類別:AEM Forms Java API參考中的InstanceManager#instances。

      注意

      從最適化表單中移除面板的所有例項時,若要新增已移除面板的例項,請使用_panelName語法來擷取面板的例項管理員,並使用例項管理員的addInstance API來新增已刪除的例項。 例如_panelName.addInstance()。 它會新增移除面板的例項。

使用父面板的折疊式功能表配置  

面板有各種版面選項。 可重複面板的「設定方式」設計選項現成可用。 使用「配置以進行折疊式設計」選項對可重複面板執行以下步驟:

  1. 在要重複的面板的上層,點選cmppr。 您可以在側欄中看到屬性。 在​Layout​下拉式清單中,選擇​Accordion

  2. 在要重複的面板上,點選cmppr。 您可以在側邊欄中看到面板屬性。 啟用​使面板可重複​標籤,並指定​Maximum​和​Minimum​欄位的值。

    現在,您可以使用加號(+)和刪除(delete-panel)按鈕來新增和移除面板。

使用表單範本中的重複子表單(XDP/XSD)

可重複的子表單類似於適用性Forms中可重複的面板。 在AEM Forms Designer中,執行下列步驟以建立重複的子表單:

  1. 在階層浮動視窗中,選取您要重複之子表單的父子表單。
  2. 在「對象」調色板中,按一下子表單頁簽,然後在「內容」清單中,選擇「流」。
  3. 選取要重複的子表單。
  4. 在「對象」調色板中,按一下「子表單」頁簽,然後在「內容」清單中,選擇「定位」或「流」。
  5. 按一下「綁定」頁簽,然後為每個資料項選擇「重複子表單」。
  6. 要指定最小重複次數,請選擇「最小計數」,然後在關聯框中鍵入一個數字。 如果此選項設定為0,並且在資料合併時沒有為子表單中的對象提供資料,則在呈現表單時不會放置子表單。
  7. 若要指定子表單重複次數的最大數,請選取「最大」,然後在相關聯的方塊中輸入數字。 如果您未在「最大值」方塊中指定值,子表單重複次數將無限制。
  8. 要指定一組子表單重複次數,而不考慮資料數量,請選擇「初始計數」,並在相關框中鍵入數字。 如果您選取此選項,且沒有可用資料或資料項少於指定的「初始計數」值,表單上仍會放置子表單的空例項。
  9. 在父子表單中添加兩個按鈕 — 一個用於添加實例,另一個用於刪除可重複子表單的實例。 如需詳細步驟,請參閱建立動作
  10. 現在,將「表單範本」連結至最適化表單。 如需詳細步驟,請參閱根據範本建立最適化表單
  11. 使用在步驟9中建立的按鈕來添加和刪除子表單。

附加的.zip檔案包含可重複的子表單範例。

取得檔案

使用XML架構(XSD)的重複設定

您可以從XML結構,以及任何複雜類型元素的minOccours & maxOccurs屬性建立可重複的面板。 有關XML架構的詳細資訊,請參閱使用XML架構作為表單模型建立最適化表單

在下列程式碼中,SampleType面板使用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>
注意

對於非折疊式版面,請使用最適化表單按鈕元件來新增和移除例項。

本頁內容