templates - 是否可以覆盖表单助手?

标签 templates scala playframework-2.0

使用文档,我可以为我的领域的布局设置我自己的助手,但我也想个性化一些由 play 给出的领域。

主要原因是 Twitter Bootstrap 2,我需要更改(在 checkbox.scala.html 中)

@input(field, args:_*) { (id, name, value, htmlArgs) =>
    <input type="checkbox" id="@id" name="@name" value="@boxValue" @(if(value == Some(boxValue)) "checked" else "") @toHtmlArgs(htmlArgs.filterKeys(_ == 'value))>
    <span>@args.toMap.get('_text)</span>
}

到 :
<label class="checkbox">
    <input type="checkbox" name="@name" id="@id" value="@boxValue" @(if(value == Some(boxValue)) "checked" else "") @toHtmlArgs(htmlArgs.filterKeys(_ == 'value)) />
    @args.toMap.get('_text)
</label>

我怎样才能做到这一点 ?
谢谢你的帮助!

最佳答案

我终于这样做了:

我创建了一个包 views.helpers.form,其中包含:

bootstrap.scala.html :

@(elements: helper.FieldElements)

<div class="control-group@if(elements.hasErrors) { error}">
    <label class="control-label" for="@elements.id">@elements.label(elements.lang)</label>
    <div class="controls">
        @elements.input
        @elements.infos(elements.lang).map { info =>
            <span class="help-inline">@info</span>
        }
        @elements.errors(elements.lang).map { error =>
            <span class="help-block">@error</span>
        }
    </div>

checkbox.scala.html :
@**
 * Generate an HTML input checkbox.
 *
 * Example:
 * {{{
 * @checkbox(field = myForm("done"))
 * }}}
 *
 * @param field The form field.
 * @param args Set of extra HTML attributes ('''id''' and '''label''' are 2 special arguments).
 * @param handler The field constructor.
 *@
@(field: play.api.data.Field, args: (Symbol,Any)*)(implicit handler: helper.FieldConstructor, lang: play.api.i18n.Lang)

@boxValue = @{ args.toMap.get('value).getOrElse("true") }

@helper.input(field, args:_*) { (id, name, value, htmlArgs) =>
    <label class="checkbox">
        <input type="checkbox" id="@id" name="@name" value="@boxValue" @(if(value == Some(boxValue)) "checked" else "") @toHtmlArgs(htmlArgs.filterKeys(_ == 'value))>
        @args.toMap.get('_text)
    </label>


div>
</div>

在我的模板中,我所要做的就是:
@import helper.{FieldConstructor, inputText, inputPassword} @** Import the original helpers *@
@import helpers.form.checkbox @** Import my helpers *@
@implicitField = @{ FieldConstructor(helpers.form.bootstrap.f) }

瞧!有用!

关于templates - 是否可以覆盖表单助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206961/

相关文章:

java - 在更改和重新加载时 Play Framework 并出现 eclipselink 错误

scala - 如何从 Enumerator/Iteratee 获取结果?

c++ - 如何检查模板的参数类型是否完整?

c++ - 使用模板类作为参数

c++ - 在 C++ 中,我想通过使用来自变量(例如字符串)的类型名信息从模板定义类对象

c++ - 尝试包装 std 容器以存储右值引用(如 unique_ptr,但在堆栈上)

scala - Akka actorSelection vs actorOf Difference

java - Play 2.1.1 构建依赖

sql - 如何使用selectExpr在spark数据帧中转换结构数组?

arrays - 使用元组进行 Scala 数组切片