Play Framework 2.3 pass/inject 模板作为控制器级别其他模板的参数
Play Framework 2.3 pass/inject templates as parameters of other templates in the controller level
是否可以在控制器级别将模板注入到 Play Framework 中的其他模板中?
我有:
Ok(views.html.staticpages.index("Your new application is ready.")(views.html.shared.header.unauthenticatedheader()))
但它给了我错误:
类型不匹配,预期 Html,实际任何
当尝试将 views.html.shared.header.unauthenticated 传递给 [...].index 时,index 收到 header: Html 作为第二个参数,当将模板传递给另一个模板时在模板级别,传递 Html 类型是正常的,但是是否可以将 header.unauthenticated 转换为 Html 类型?
这些是我的模板的 header:
header.unathenticatedheader:
@()(implicit request: common.request.CanBeAuthenticatedRequest[_])
staticpages.index:
@import common.request.CanBeAuthenticatedRequest
@(title: String = "Welcome to Play")(header: Html)(implicit request: CanBeAuthenticatedRequest[_])
这里有几个选择。可以传入渲染结果,也可以传入模板,让它自己在模板内渲染。
如果您需要将参数传递到模板中,您可能会更好地传递结果;如果你传入无参数模板,这是个人喜好。
传入结果
模板:
@(message: String)(myInsert: Html)
<div>start: @message</div>
<div> @myInsert </div>
<div>end</div>
控制器:
def index = Action {
Ok(views.html.index("foo")(views.html.insert()))
}
传入模板
模板:
@(message: String)(myInsert: Template0[play.twirl.api.HtmlFormat.Appendable])
<div>start @message</div>
<div> @myInsert.render() </div>
<div>end</div>
控制器:
def index = Action {
Ok(views.html.index2("sdf sdf d")(views.html.insert2))
}
是否可以在控制器级别将模板注入到 Play Framework 中的其他模板中?
我有:
Ok(views.html.staticpages.index("Your new application is ready.")(views.html.shared.header.unauthenticatedheader()))
但它给了我错误:
类型不匹配,预期 Html,实际任何
当尝试将 views.html.shared.header.unauthenticated 传递给 [...].index 时,index 收到 header: Html 作为第二个参数,当将模板传递给另一个模板时在模板级别,传递 Html 类型是正常的,但是是否可以将 header.unauthenticated 转换为 Html 类型?
这些是我的模板的 header:
header.unathenticatedheader:
@()(implicit request: common.request.CanBeAuthenticatedRequest[_])
staticpages.index:
@import common.request.CanBeAuthenticatedRequest
@(title: String = "Welcome to Play")(header: Html)(implicit request: CanBeAuthenticatedRequest[_])
这里有几个选择。可以传入渲染结果,也可以传入模板,让它自己在模板内渲染。
如果您需要将参数传递到模板中,您可能会更好地传递结果;如果你传入无参数模板,这是个人喜好。
传入结果
模板:
@(message: String)(myInsert: Html)
<div>start: @message</div>
<div> @myInsert </div>
<div>end</div>
控制器:
def index = Action {
Ok(views.html.index("foo")(views.html.insert()))
}
传入模板
模板:
@(message: String)(myInsert: Template0[play.twirl.api.HtmlFormat.Appendable])
<div>start @message</div>
<div> @myInsert.render() </div>
<div>end</div>
控制器:
def index = Action {
Ok(views.html.index2("sdf sdf d")(views.html.insert2))
}