nécessité de rendre plusieurs extraits html dans des endroits différents à l'intérieur d'un modèle de hameau
Question
dans mon default-layout.hamlet
:
!!!
<html lang="en">
<head>
<meta charset="utf-8">
<title>#{pageTitle pc}
^{pageHead pc}
<body>
<div id="main">
<div id="header">
????
<div id="content">
^{pageBody pc}
à partir d'une fonction de gestionnaire, je dois remplacer le ????
ci-dessus avec des contenus HTML.
comment cela se fait?
Merci pour toute entrée.
EDIT:
Je cherche des fonctionnalités similaires, par exemple, les blocs de modèle de django. Je peux définir un bloc à l'intérieur d'un modèle et le gestionnaire qui utilise ce modèle pour le rendu, peut remplir les blocs du modèle avec le contenu nécessaire. En ce moment, yessod a effectivement un seul bloc dans le corps d'un modèle. que « défini » par le ^{pageBody pc}
d'appel. Je sais que je peux construire la sortie générée par pageBody
quelque façon que je veux à l'aide addWidget
etc., mais maintenant je vais devoir afficher mes <div id="header">
et <div id="content">
aussi, et je veux éviter que parce que tous mes gestionnaires devront sortir de ces div
est à ont la même structure de balisage dans toutes les pages.
La solution
Je pense que la réponse est de définir une fonction en plus defaultLayout. La seule chose qui est magique dans defaultLayout est que les sous-sites (par exemple, auth) et les messages d'erreur utilisent par défaut. Mais vous pouvez définir un « myDefaultLayout » qui prend les autres éléments de contenu que vous voulez. Vous pouvez même définir une fonction d'aide qui enveloppe les blocs supplémentaires en un seul bloc et passe ensuite à ce que defaultLayout.