いくつかのオプションがあります。
まず、ヘルパーをオーバーライドして、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}
始まる3行を変更または削除するだけです。 @elements.errors(elements.lang).map
。「必須」エラー自体はから@elements.infos...
です。
それとも、このフィールドが必須ではないという問題ですか?これは、ヘルパーではなく、フォーム定義の問題です。Scalaフォームのヘルプページの「オプションの値」に示されているように、フォームの「テキスト」フィールドをオプションにします。たとえば、タスク定義が次の場所にある場合Application.scala
:
val taskForm = Form (
"text" -> optional(text) // changed from 'nonEmptyText'
)
これにより、「テキスト」フィールドOption[String]
がプレーンではなくにマップされString
ます。フォームがケースクラス(または他のマッピングロジック)に基づいている場合は、それに応じてフォームを変更する必要があります。