我有一个像这样的代码块:
@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>
答案 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>
}
}