在可重用块中将变量输出到HTML标记

时间:2013-08-19 12:39:08

标签: html templates web playframework-2.0

我有一个像这样的代码块:

@reusableBlock(isAdmin: Boolean, value: String) = @{
    if(isAdmin){
        <a href="/admin/{value}">{value}</a>
    } else {
        <a href="/{value}">{value}</a>
    }
}

如果我传递一些参数:

<h1>@reusableBlock(true, "config")</h1>

我得到了

<a href=localhost:9000/admin/%7Bvalue%7D >config</a> 
instead of <a href=localhost:9000/admin/config >config</a>

您能否告诉我如何在可重用块中将变量输出到HTML标记。

非常感谢。

========编辑=======

    @renderRoleButton(loggedin: Account, biz: Biz, isAdminPage: Boolean) = @{
    if(loggedin != null) {
        var isManaging = false;
        var roleText = "";
        var bizUsername = biz.username;
        for(role <- loggedin.roles) {
            if(role.restaurant.id == biz.id) {
                isManaging = true;
                roleText = role.role;
            }
        }

        if(isManaging) {
                if(isAdminPage) {       
                    <a href="/{bizUsername}"  class='btn btn-primary'>Preview as normal user {bizUsername}</a>
                } else {
                    <a href='/biz/bizUsername' class="btn btn-primary">Manage as {roleText}</a>
                }

            } else if(!loggedin.likes.contains(biz)) {
                <button type="button" class="btn btn-primary" value="Like">Like</button>
            } else {
                <button type="button" class="btn btn-primary" value="Like">Unlike</button>
            }           
    } else {
        <button type="button" class="btn btn-primary" value="Like">Log in to see good deals</button>
    }
}

<h1>@biz.name @renderRoleButton(loggedin, biz, isAdminPage)</h1>

2 个答案:

答案 0 :(得分:1)

这应该有效。请注意@字符位于前两行和@value的位置的变化(如serejja所述)。

@reusableBlock(isAdmin: Boolean, value: String) = {
  @if(isAdmin){
    <a href="/admin/@value">@value</a>
  } else {
    <a href="/@value">@value</a>
  }
}

- 编辑 -

由于您需要将其保留为@{}块,因此我认为您需要连接字符串以构建所需的HTML。您只需要在isAdminPage检查中更改这两行。我认为其他一切都可以保持不变。

if(isAdminPage){
  Html("<a href=\"/" + bizUsername + "\" class=\"btn btn-primary\">Preview as normal user " + bizUsername + "</a>")
}

答案 1 :(得分:0)

试试这个:

@reusableBlock(isAdmin: Boolean, value: String) = {
    @if(isAdmin){
        <a href="/admin/@value">@value</a>
    } else {
        <a href="/@value">@value</a>
    }
}