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