如何在Play Framework的Twirl中将隐式值从一种模板布局传递到另一种?

时间:2019-11-29 07:31:28

标签: scala playframework twirl

假设我有此控制器的操作:

def getPost = Action { implicit request => Ok(views.html.post("bla bla bla")) }

现在我有两种布局:

// baseLayout.scala.html:
@(title: String)(content: Html)(implicit req: RequestHeader)
<html>
  ...
  @content
  ...
</html>

// postLayout.scala.html:
@(title: String)(content: Html)(implicit req: RequestHeader)
@baseLayout(title) { // Error: Cannot find any HTTP Request Header here
  <h1>Post</h1>
  @content
}

然后我有这个模板:

// post.scala.html
@(post: String)(implicit req: RequestHeader)
@postLayout("First post") {
  <div>@post</div>
}

此代码无法编译。我收到此错误

Cannot find any HTTP Request Header here (See up)

就像隐式RequestHeader被成功传输一样: 从Actionpost模板, 然后从post模板到postLayout模板。

但是它不会从postLayout模板传输到baseLayout模板。

我怀疑这是由于以下事实:在postLayout模板中,隐式出现在Html块之后,它可能会丢弃任何隐式传播。除此之外,我看不到任何重复,我完全迷失了。

0 个答案:

没有答案