scala - Scala Play 中的可互换菜单

标签 scala playframework playframework-2.0

目前我正在使用 Bootstrap 和 Scala Play 开发 Web 应用程序,但我并不真正了解模板引擎。

我想要不同的 Bootstrap 导航栏。第一个,如果用户尚未登录。 user not logged in yet

第二个 View ,当用户登录时,他/她可以在导航栏的右上角看到她的名字。

因此我创建了一个loginMenu.scala.html 文件,使右侧的导航栏可以互换

<li class="dropdown">
    <a class="dropdown-toggle" href="#" data-toggle="dropdown">
                                Login
        <strong class="caret"></strong>
    </a>
    <div class="dropdown-menu login-menu" role="menu">
        <form class="form-horizontal" action="@routes.Authentication.authenticate" method="post">

            <input type="email" class="form-control" placeholder="email" name="email" id="email">
            <input type="password" class="form-control" placeholder="password" name="password", id="password">
            <label class="checkbox" style="padding-top:0px">
                <input type="checkbox" checked="checked" value="1"> Remember me
            </label>

            <button class="btn btn-danger" type="submit">Login</button>
        </form>
    </div>
</li>

然后我尝试将其动态插入我的导航栏模板 ma​​in.scala.html

@(title: String, currentPage: String)(rightMenu: Html)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
        ...
    </head>
<!-- Bootstrap navbar here-->
...
<!--right side of Bootstrap nav -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
       <ul class="nav navbar-nav navbar-right">
             @rightMenu
       </ul>
 </div>

在我的其他网站中,我使用这样的东西:

@main("Welcome to Play", "Home") (@loginMenu){
   <div class="container">
       <h2>Home</h2>
   </div>
}

当我尝试启动它时,出现以下错误。

[error]home.scala.html:3: missing arguments for method apply in object main;
[error] follow this method with `_' if you want to treat it as a partially applied function

[error] @main("Welcome to Play", "Home") (@loginMenu){ 
             ^

我只是想让@loginMenu 打印我当前文件中的原始HTML。我该怎么做呢?

最佳答案

如果您将 loginMenu 用作 main 的参数,则不需要在其前面使用 @,因为您已经在 Scala 代码块中。

尝试:

@main("Welcome to Play", "Home")(loginMenu()) {
    <div class="container">
       <h2>Home</h2>
    </div>
}

关于scala - Scala Play 中的可互换菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28914742/

相关文章:

java - Spark Kubernetes - 使用 --files 或 spark.files 将配置文件从驱动程序复制到执行程序时出现 FileNotFoundException

scala - 在 Scala 中删除 BigDecimal 的尾随零的正确方法是什么?

java - 在 Play Framework 2.10 中上传文件的路径

java - Play Framework - 如何将我的模块的配置保存在其中?

scala - 如何在 Spark 中处理 XML 文件?

javascript - 对象没有方法 getColumnType

rest - 自动化 Rest API 测试并将其与持续集成(CI-Jenkins)集成

java - 如何在 Play Framework 中使用 POST 参数?

scala - Play 2 ScalaTemplates 代码是如何工作的

scala - 有没有办法将 Dependabot 与 sbt 集成以进行依赖项更新?