nécessité de rendre plusieurs extraits html dans des endroits différents à l'intérieur d'un modèle de hameau

StackOverflow https://stackoverflow.com/questions/7337341

  •  27-10-2019
  •  | 
  •  

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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top