Version | Lien de l’article |
---|---|
AEM 6.5 | Cliquez ici |
AEM as a Cloud Service | Cet article |
Une section répétable fait référence à une partie d’un formulaire qui peut être dupliquée ou répétée plusieurs fois afin de collecter des informations pour plusieurs instances des mêmes données.
Prenons l’exemple d’un formulaire utilisé pour collecter des informations sur l’expérience professionnelle d’une personne. Vous pouvez avoir une section répétable pour capturer les détails de chaque emploi précédent. La section répétable contient généralement des champs tels que le nom de l’entreprise, l’intitulé du poste, les dates de début et de fin d’emploi, et les responsabilités. La personne utilisatrice peut ajouter plusieurs instances de la section répétable pour saisir des informations sur chaque emploi qu’elle a effectué.
À la fin de cet article, vous saurez :
Vous pouvez utiliser la variable Panneau, Accordéon, Onglets horizontaux, ou Assistant composants pour rendre les sections d’un formulaire adaptatif répétables. Vous pouvez ajouter des composants enfants aux composants panneau, accordéon, onglets horizontaux ou assistant pour créer une section répétable dans un formulaire.
Les exemples de ce document reposent sur le composant Panneau. Vous pouvez effectuer les étapes identiques pour créer les composants répétables Accordéon, Onglets horizontaux, et Assistant.
Pour répéter un panneau dans le formulaire ou supprimer les panneaux répétables, un auteur ou une autrice de formulaire utilise un composant de bouton pour ajouter ou supprimer une instance du panneau. Pour ajouter ou supprimer des sections répétables (panneaux) dans un formulaire :
Pour activer la répétition d’un panneau, procédez comme suit :
Sélectionnez un conteneur de panneau, puis sélectionnez .
Cliquez sur Répéter le panneau et mettez le bouton (bascule) sur Activer la répétition du panneau.
Définissez les répétitions minimales comme requis pour les sections répétables minimales. Vous pouvez définir les répétitions minimales sur zéro pour ne pas répéter de panneaux ou pour supprimer les panneaux répétés. Par défaut, la valeur de répétition minimale est zéro.
Définissez les répétitions maximales pour répéter le panneau autant de fois que nécessaire. La valeur est par défaut infinie.
Le parent du panneau à répéter doit contenir un bouton d’ajout pour gérer l’instance de répétition du panneau. Pour insérer des boutons dans le parent et activer des scripts sur les boutons, procédez comme suit :
Ajoutez un composant de bouton au parent du panneau. Dans la vidéo d’exemple ci-dessous, un composant de bouton avec le nom de libellé Ajouter et le nom de champ AddPanel est utilisé. Sélectionnez le composant, puis sélectionnez . Les règles du composant de bouton s’ouvrent dans l’éditeur de règles.
Dans la fenêtre Éditeur de règles, cliquez sur Créer.
Sélectionnez Éditeur visuel dans la ligne Objets et fonctions de formulaire.
Sélectionnez Éditeur de code dans la ligne Objets et fonctions de formulaire. Cliquez sur Modifier les règles et dans la zone de code :
this.panel.instanceManager.addInstance()
.Cliquez sur Terminé.
Le parent du panneau doit contenir un bouton de suppression pour supprimer l’instance des panneaux répétables. Pour insérer des boutons dans le parent et activer des scripts sur les boutons pour supprimer les panneaux répétables, procédez comme suit :
Ajoutez un composant de bouton au parent du panneau. Dans la vidéo ci-dessous, un composant de bouton avec le nom de libellé Supprimer et le nom de champ DeletePanel est utilisé. Sélectionnez le composant, puis sélectionnez . Les règles du composant de bouton s’ouvrent dans l’éditeur de règles.
Dans la fenêtre Éditeur de règles, cliquez sur Créer.
Sélectionnez Éditeur visuel dans la ligne Objets et fonctions de formulaire.
Sélectionnez Éditeur de code dans la ligne Objets et fonctions de formulaire. Cliquez sur Modifier les règles et dans la zone de code :
this.panel.instanceManager.removeInstance(this.panel.instanceIndex)
.Cliquez sur Terminé.
Si un champ appartient à un panneau répétable, vous ne pouvez pas y accéder directement via son nom dans vos scripts. Pour accéder au champ, spécifiez l’instance répétable à laquelle le champ appartient à l’aide de l’API instances
dans InstanceManager
. La syntaxe pour utiliser l’API instances
dansInstanceManager
est la suivante :
<panelName>.instanceManager.instances[<instanceNumber>].<fieldname>
Par exemple, vous créez un formulaire adaptatif avec un panneau répétable contenant une zone de texte. Lorsque vous pré-remplissez le formulaire avec trois zones de texte répétables, le code xml ci-dessous est requis :
<panel1><textbox1>AA1</panel1></textbox1>
<panel1><textbox1>AA2</panel1></textbox1>
<panel1><textbox1>AA3</panel1></textbox1>
Pour lire les données AA1, spécifiez les paramètres suivants :
Panel1.instanceManager.instances[0].textbox.value
Pour lire les données AA2, spécifiez les paramètres suivants :
Panel1.instanceManager.instances[1].textbox.value
Lorsque toutes les instances d’un panneau sont supprimées d’un formulaire adaptatif, pour ajouter une instance du panneau supprimé, utilisez la syntaxe _panelName pour capturer le gestionnaire d’instances du panneau et utilisez l’API addInstance du gestionnaire d’instances pour ajouter l’instance supprimée. Par exemple, _panelName.addInstance(). Elle ajoute une instance du panneau supprimé.
Un sous-formulaire répétable est similaire aux panneaux répétables dans les formulaires adaptatifs. Dans AEM Forms Designer, suivez la procédure suivante pour créer un sous-formulaire qui se répète :
Le fichier .zip joint contient un exemple de sous-formulaire répétable.
Vous pouvez créer des panneaux répétables à partir d’un schéma XML et de la propriété minOccurs et maxOccurs de n’importe quel élément de type complexe. Pour des informations détaillées sur le schéma XML, voir Création de formulaires adaptatifs à l’aide du schéma XML en tant que modèle de formulaire.
Dans le code suivant, le panneauSampleType
utilise la propriété minOccurs & 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>