Necesita representar varios fragmentos HTML en diferentes lugares dentro de una plantilla de aldea

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

  •  27-10-2019
  •  | 
  •  

Pregunta

en mi 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}

Desde una función de controlador, necesito reemplazar el ???? arriba con algunos contenidos HTML.

¿Cómo se hace esto?

Gracias por cualquier aporte.

EDITAR:

Estoy buscando una funcionalidad similar a, por ejemplo, los bloques de plantilla de Django. Puedo definir un bloque dentro de una plantilla y el controlador que usa esta plantilla para representar, puede completar los bloques de la plantilla con el contenido necesario. En este momento, Yesod tiene efectivamente un solo bloque en el cuerpo de una plantilla. que "definido" por la llamada ^{pageBody pc}. Sé que puedo construir la salida generada por pageBody de cualquier forma que quiera usar addWidget etc., pero en este momento necesitaré generar mi <div id="header"> y <div id="content"> también y quiero evitar eso porque todos mis manejadores tendrán que generar estos div'S tener la misma estructura de marcado en todas las páginas.

¿Fue útil?

Solución

Creo que la respuesta es definir una función además de predeterminado. Lo único que es mágico de ForautorLayout es que los subsitios (p. Ej., Auth) y los mensajes de error lo usan de forma predeterminada. Pero podrías definir un "mydefaultLayout" que toma las otras piezas de contenido que quieres. Incluso podría definir una función de ayuda que envuelva los bloques adicionales en un solo bloque y luego lo pasa a la capa de defecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top