4

Scala 表单助手并不像我预期的那样一致

@form(action = routes.Admin.insertNewArticle, 'class -> "form-horizontal") {
  <fieldset>
    @textarea(field = articleForm("text"), args = 'rows -> 3, 'cols -> 50)
    @input(articleForm("author"), "author")
  </fieldset> 
}

这些input字段看起来非常漂亮,左侧有标签,右侧有字段。但这textarea很奇怪,它没有用<div>标签包裹在 a 中,而是在<dl>标签中,底部有一个“必填”标志,我不知道如何删除。

这是它的外观图像:

在此处输入图像描述

关于如何使表格看起来一致的任何提示?

谢谢。

4

1 回答 1

3

你有几个选择。

首先,您可以覆盖帮助器,只为 textarea 控件放入您自己的手动 HTML。这在“自己处理 HTML 输入创建”部分下的“使用表单模板帮助程序”下的文档中进行了描述,并且在此处描述了常见的陷阱。如果你想要一个包含标签的 div,你可以这样做:

@helper.input(field = articleForm("text")) { (id, name, value, args) =>
    <div>
        <label>text</label>
        <textarea name="@name" id="@id" rows='3' cols='50'>@value</textarea>
    </div>
}

您还可以使用 CSS 来设置textarea助手生成的默认 HTML 样式。<dl>标签只是一个定义列表,可以像任何 html 列表一样设置样式。作为参考,您可以在github中找到默认的字段构造函数代码,该代码向您展示了生成的 html 的样子。

我假设您正在谈论的“必需”标志是<dd>您可以在生成的 HTML 中看到的错误标记。如果您不采用手动 HTML 路线,那么要摆脱它,您需要定义自己的字段构造函数。我在上面链接到的 Play 帮助页面也对此进行了描述。但是,如果您关心的只是消除错误,那应该很容易,只需复制默认字段构造函数代码(也在上面链接),然后更改或删除读取的部分@if(elements.hasErrors) {error}以及以开头的三行@elements.errors(elements.lang).map. “必需”错误本身来自@elements.infos....

或者这个字段应该是必需的问题?这是表单定义的问题,而不是助手的问题。将表单中的“文本”字段设为可选,如Scala Forms 帮助页面中的“可选值”下所示。例如,如果您的任务定义位于Application.scala

   val taskForm = Form (
     "text" -> optional(text) // changed from 'nonEmptyText'
   )

这也将使“文本”字段映射到 anOption[String]而不是 plain String。如果您的表单由案例类(或其他映射逻辑)支持,则您必须相应地更改它。

于 2013-02-21T00:50:51.167 回答