Scala Play中的可互换菜单

Scala Play中的可互换菜单,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,目前,我正在使用Bootstrap和Scala Play开发一个web应用程序,但我并不真正了解模板引擎 我想有不同的引导导航栏。第一个,如果用户尚未登录。 第二个视图,当用户登录时,他/她可以在导航栏的右上角看到她的名字 因此,我创建了一个loginMenu.scala.html文件,以使导航栏的右侧可以互换 <li class="dropdown"> <a class="dropdown-toggle" href="#" data-toggle="dropdown

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

我想有不同的引导导航栏。第一个,如果用户尚未登录。

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

因此,我创建了一个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>

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

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

尝试:

@main(“欢迎玩”,“主页”)(loginMenu()){
家
}

我想你就快到了

@main("Welcome to Play", "Home") {@loginMenu()}  {
                                 ^          ^^^
                                 ^          ^^^
   <div class="container">
       <h2>Home</h2>
   </div>
}
注意不要在这两个词之间加空格
(“欢迎玩”、“主页”)
(loggedInMenu.apply())
。否则它将不起作用。

如果将
loginMenu
作为
main
的参数应用,则不需要在其前面添加
@
,因为您已经处于Scala代码块中。如果这样做,您得到的类型不匹配:found:views.html.loggedInMenu.type required:play.twirl.api.html我发现您必须调用loginMenu.apply()才能获得HTML@slashburn是的,你是对的,我已经编辑了答案。
@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){ 
             ^
@main("Welcome to Play", "Home")(loginMenu()) {
    <div class="container">
       <h2>Home</h2>
    </div>
}
@main("Welcome to Play", "Home") {@loginMenu()}  {
                                 ^          ^^^
                                 ^          ^^^
   <div class="container">
       <h2>Home</h2>
   </div>
}
@main("Welcome to Play", "Home")(loggedInMenu.apply()) {...}