【问题标题】:Play Framework Form Error HandlingPlay Framework 表单错误处理
【发布时间】:2015-08-30 07:27:03
【问题描述】:

这是我的视图文件,其中包含用户必须填写的表单:

@helper.form(call) {
    @helper.input(resumeForm("surname"), '_label -> "Surname") { (id, name, value, args) =>
        <input name="@name" type="text" value="@value" placeholder="Enter your surname">
    }
}

这是我的自定义字段构造函数:

@(elements: helper.FieldElements)

@if(!elements.args.isDefinedAt('showLabel) || elements.args('showLabel) == true) {
    <div class="input-with-label text-left">
        <span>@elements.label</span>
        @elements.input
    </div>
} else {
    @elements.input
}

现在我进退两难了。当输入的值没有清除验证时,我需要在输入中添加类field-error,我需要添加data-toggledata-placementtitle。但是,我不知道有什么方法可以检查特定字段是否有错误。实现这一点的最佳方法是什么?我已经看过使用inputText 或其他东西,但这与基本input 基本相同,因此也无法访问任何错误。我也无法在字段构造函数中更改 elements.input 的 HTML。

【问题讨论】:

    标签: scala playframework playframework-2.3 playframework-2.4


    【解决方案1】:

    看看play documentation编写你自己的字段构造函数。 您可以在自定义字段构造函数的模板中使用 @if(elements.hasErrors) 检查错误。

    <div class="input-with-label text-left @if(elements.hasErrors){field-error}">
        ...
    

    编辑:

    您可以通过args 参数将字段的错误状态传递给您的输入。来自播放文档:

    注意:所有额外参数都将添加到生成的 HTML 中,名称以 _ 字符开头的参数除外。以下划线开头的参数保留给字段构造函数参数(我们稍后会看到)。

    您需要转换为匹配的类型。

    @input(resumeForm("surname"), '_label -> "Surname", 'hasErrors -> resumeForm("surname").hasErrors) { (id, name, value, args) =>
        <input name="@name" type="text" value="@value" placeholder="Enter your surname"
            class="@if(args.get('hasErrors).map(_ match { case x:Boolean => x}).get){field-error}">
    }
    

    【讨论】:

    • 我就是这么说的。这不会解决我的问题,因为我无法使用它来更改输入。
    • 从来没有真正理解这些句子的含义哈哈。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多