玩!框架。模板“包括”

Posted

技术标签:

【中文标题】玩!框架。模板“包括”【英文标题】:Play! framework. template "include" 【发布时间】:2012-07-30 14:59:19 【问题描述】:

我正在规划我的网站结构如下:

header.scala.html XXX footer.scala.html

现在,应该有一个特定页面(即“UsersView.scala.html”)而不是“xxx”。 我需要的是包括(就像众所周知的语言一样)页脚的来源和 页眉插入到中间页面的代码中。

所以我的问题是:

    如何使用 scala 模板将页面包含在另一个页面中? 你认为这是一个很好的 Play 范例!基于框架的网站?

【问题讨论】:

【参考方案1】:

只需像方法一样调用另一个模板。如果你想包含 footer.scala.html

@footer()

【讨论】:

【参考方案2】:

一种常见的模式是创建一个包含样板的模板,并采用 HTML 类型的参数。比方说:

main.scala.html

@(content: HTML)

@header
// boilerplate

@content

// more boilerplate
@footer

其实,这种方式其实并不需要把页眉和页脚分开。

您的 UsersView.scala.html 如下所示:

@main 

// all your users page html here.


您通过将用户视图作为参数传入 main 来包装用户视图。

你可以在samples看到这方面的例子

我常用的主模板有点复杂,大致如下:

@(title: String)(headInsert: Html = Html.empty)(content: Html)(implicit user: Option[User] = None)
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>@title</title>
  // bootstrap stuff here
  @headInsert
</head>
<body>
  @menu(user)
  <div id="mainContainer" class="container">  
    @content
  </div>

</body>
</html>

这样,模板可以传入头部插入和标题,让用户可用,当然还有内容。

【讨论】:

如何处理页面需要向 HEAD 添加额外的脚本和样式表标签的情况? 最后一个例子,看到headInsert参数了吗?您可以使用它传入要插入到头部的 HTML。你可以这样称呼它:@main("title") ...content... 【参考方案3】:

Play 提供了一种非常方便的方式来帮助实现它!

来自官方文档的布局部分:

首先我们有一个base.html(我们在django中调用-_-)

// views/main.scala.html
@(title: String)(content: Html)
<!DOCTYPE html>
<html>
  <head>
    <title>@title</title>
  </head>
  <body>
    <section class="content">@content</section>
  </body>
</html>

base.html如何使用?

@main(title = "Home") 

  <h1>Home page</h1>


更多信息here

【讨论】:

以上是关于玩!框架。模板“包括”的主要内容,如果未能解决你的问题,请参考以下文章

玩!框架日志记录功能

Django web框架之模板

SSH框架的基本整合

SpringSpringMVCMybatis框架整合配置SSM模板

看TensorFlow如何玩转深度学习

layui网站后台管理系统框架模板