78 lines
2.0 KiB
Markdown
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 |