17.11.4.3 Répétables multi-niveaux

Il est possible d'insérer plusieurs niveaux de structures multiples. Ce contrôle des répétables s'appuie sur les méthodes présentées dans le chapitre affectation des répétables.

17.11.4.3.1 Possibilités et limitations

Il est possible d'avoir :

  • des tableaux dans des tableaux,
  • des tableaux dans des sections,
  • des sections dans des tableaux,
  • des listes dans des tableaux,
  • des listes dans des sections.

Il n'est pas possible d'avoir :

  • des listes avec des sous/listes,
  • des tableaux dans des listes,
  • des sections dans des listes.

17.11.4.3.2 Exemples

Les deux exemples suivant montrent comment réaliser des templates à plusieurs niveaux d'imbrications.

Le premier exemple illustre comment insérer des tables et des sous-tables. Le deuxième exemple montre comment utiliser les sections openDocument pour produire des paragraphes avec leur sous-paragraphes.

17.11.4.3.2.1 Exemple à deux niveaux d'imbrications :

public function testfruit($target) {
    $this->lay->set("TODAY", $this->getTimeDate());
    $repeatColor[] = array( 
        "COLOR"=>"jaune",
        "VEGETABLE"=>array("pomme","banane"),
        "DESCR"=>array("pommier", "bananier")
    );
    $repeatColor[] = array(
        "COLOR"=>"rouge",
        "VEGETABLE"=>array("cerise","fraise"),
        "DESCR"=>array("Cerisier","Fraisier")
    );
    $repeatColor[] = array(
        "COLOR"=>"vert",
        "VEGETABLE"=>array("concombre","cornichon","poivron"),
        "DESCR"=>array("Plante potagère", "Condiment","Capsicum annuum"));
    $this->lay->setRepeatable($repeatColor);
}

Le template :

template

Figure 121. template

donne le fichier :

résultat

Figure 122. résultat

17.11.4.3.2.2 Exemple à trois niveaux d'imbrications :

/**
*@templateController
*/
function testfruit($target) {
    $this->lay->set("TODAY",$this->getTimeDate());
    $repeatColor[] = array(
        "COLOR" => "jaune",
        "VEGETABLE" => array("pomme","banane"),
        "VARIETY" => array(
            array("granny", "fuji","golden"),array("plantain")
        )
    );
    $repeatColor[] = array(
        "COLOR" => "rouge",
        "VEGETABLE" => array("cerise","fraise"),
        "VARIETY" => array(
            array("bigarreau","griotte"),
            array("mara des bois","agate","anabelle")
        )
    );
    $repeatColor[] = array(
        "COLOR"=>"vert",
        "VEGETABLE"=>array("concombre","cornichon","poivron"),
        "VARIETY"=>array(
            array("gynial","Cucumis sativus"),
            array("vert de paris"),
            array("doux sonar","jericho")
        )
    );
    $this->lay->setRepeatable($repeatColor);
}

Le template :

template

Figure 123. template

donne le fichier :

résultat

Figure 124. résultat

Note : Ici il faut bien imbriquer les sections pour être conforme à la structure du répétable défini dans le code (Niveau 1 : COLOR, Niveau 2 : VEGETABLE, Niveau 3 : VARIETY).

×