Scala 如何在Play Framework中将隐式值从一个模板布局传递到另一个模板布局';旋转?
假设我有这个控制器的动作:Scala 如何在Play Framework中将隐式值从一个模板布局传递到另一个模板布局';旋转?,scala,playframework,twirl,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> 这就像隐
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>
这就像隐式RequestHeader
成功传输一样:
从操作
到发布
模板,
然后从post
模板到postLayout
模板
但是它不会从postLayout
模板传输到baseLayout
模板
我怀疑这是因为在
postLayout
模板中,隐式在Html
块之后,它可能会放弃任何隐式传播。除此之外,我看不到任何解释,我完全不知所措。如果显式使用req,比如:@baseLayout(title){…}(req)
?!您可能希望在target/Scala-2.1*/…
中的某个位置查看生成的Scala文件。我有一个错误:req未定义
。非常奇怪,我可以在postLayout中使用隐式的req,但是如果我尝试将它传递给baseLayout,我有一个req没有定义。我甚至试图这样定义baseLayout:@(title:String,req:RequestHeader)(content:Html)
,所以我可以这样调用它:baseLayout(title,req){…}
,仍然没有定义req。我将检查生成的Scala文件…顺便问一下,您使用的是哪个播放版本?只是因为,您的示例代码在2.7.3中运行良好。如果显式使用req,例如:@baseLayout(title){…}(req)
?!您可能希望在target/Scala-2.1*/…
中的某个位置查看生成的Scala文件。我有一个错误:req未定义
。非常奇怪,我可以在postLayout中使用隐式的req,但是如果我尝试将它传递给baseLayout,我有一个req没有定义。我甚至试图这样定义baseLayout:@(title:String,req:RequestHeader)(content:Html)
,所以我可以这样调用它:baseLayout(title,req){…}
,仍然没有定义req。我将检查生成的Scala文件…顺便问一下,您使用的是哪个播放版本?只是因为,您的示例代码在2.7.3中运行良好。
// 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)