nur-ture/src/web/layout/README.md

2.0 KiB

nulib\web\layout

faire le layout d'avance, e.g

ly::prepare([
  ["row", "class" => "row-gap",
    ["col", 2, "content" => "a"],
    ["col", 10, "content" => "b"],
  ],
  ["row",
    ["col", 6, "content" => "c"],
    ["col", 6, "content" => "d"],
  ],
]);

dans cet exemple, il y a 4 sections de contenu appelées "a", "b", "c" et "d"

désactiver le contenu dans un colonne ou un row avec "content" => false

faut-il prévoir d'autres types que "row" et "col", par exemple "panel"?

une fois que le layout est fait, on sélectionne les sections avant de les remplir

ly::start("a");
//... contenu de la section "a"
ly::start("b");
//... contenu de la section "b"
ly::end();

tant que les sections sont mentionnées dans l'ordre, l'affichage se fait au fur et à mesure

éventuellement, supporter un mode où les sections sont remplies dans un ordre quelconque. dans ce cas, le contenu est enregistré dans un fichier temporaire mémoire avec ob_start() et ob_end() puis il est affiché à la fin lors de ly::end() exemple:

ly::prepare([["row",
  ["col", 3, "content" => "menu"],
  ["col", 9, "content" => "details"],
]]);
foreach ($items as $item) {
  ly::start("menu");
  write(link);
  ly::start("details");
  write(details);
}

alternatives

les ids de contenu sont des clés

ly::prepare([["row",
  "menu" => ["col", 3],
  "details" => ["col", 9],
]]);

conflit possible avec "class" => xxx et autres attributs?

ly::start($id, $func) permet de basculer temporairement dans une section

ly::start("details");
foreach ($items as $item) {
  ly::start("menu", function() {
    write(link);  
  });
  write(details);
}

le comportement d'enregistrer le contenu devrait être demandé explicitement

  • true
  • false: exception si une section n'est pas remplie avant de passer à la suivante
  • auto: activé si les sections sont accédées dans un ordre différent du naturel

-- coding: utf-8 mode: markdown -- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary