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 :
donne le fichier :
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 :
donne le fichier :
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
).