1

在我的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}

从处理程序函数中,我需要????用一些 HTML 内容替换上面的内容。

这是怎么做的?

感谢您的任何意见。

编辑:

我正在寻找类似于 django 的模板块的功能。我可以在模板中定义一个块,并且使用此模板进行渲染的处理程序可以用所需的内容填充模板的块。现在,yesod 在模板的主体中实际上只有一个块。由调用“定义” ^{pageBody pc}pageBody我知道我可以通过我想使用的任何方式建立输出addWidget等等,但是现在我也需要输出我的<div id="header"><div id="content">我想避免这种情况,因为我所有的处理程序都必须输出这些div以具有相同的所有页面中的标记结构。

4

1 回答 1

1

我认为答案是在defaultLayout之外定义一个函数。defaultLayout 的唯一神奇之处在于子站点(例如,auth)和错误消息默认使用它。但是您可以定义一个“myDefaultLayout”来获取您想要的其他内容。您甚至可以定义一个辅助函数,将额外的块包装成一个块,然后将其传递给 defaultLayout。

于 2011-09-08T15:16:24.747 回答