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

78 lines
2.0 KiB
Markdown

# nulib\web\layout
faire le layout d'avance, e.g
~~~php
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
~~~php
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:
~~~php
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
~~~php
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
~~~php
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