21

フォームテンプレートヘルパーのplay2scalaチュートリアルに記載されている手順を理解しようとしています。「独自のフィールドコンストラクターの作成」のセクションで行き詰まっています。サンプルテンプレートを提供します(ファイルの名前は言うまでもありません)。

@(elements: helper.FieldElements)

<div class="@if(elements.hasErrors) {error}">
    <label for="@elements.id">@elements.label</label>
    <div class="input">
        @elements.input
        <span class="errors">@elements.errors.mkString(", ")</span>
        <span class="help">@elements.infos.mkString(", ")</span> 
    </div>
</div>

次に、このコードを表示します。

object MyHelpers {
  implicit val myFields = FieldConstructor(myFieldConstructorTemplate.f)    
}

これがテンプレートにどのように関連するのか混乱しています。(たとえば、テンプレートファイルはmyFieldConstructorTemplate.scala.htmlと呼ばれることになっていますか?)運が悪かったので、これにいくつかのバリエーションを試しました。

私はscalaとPlayの両方に慣れていませんが、play 2とそのドキュメントが新しいことも知っているので、私が見逃している信じられないほど明白なものが何であるかわかりません。

ありがとう!

4

3 に答える 3

10

チュートリアルでは、このコードはテキストに沿っています。

多くの場合、独自のフィールド コンストラクターを作成する必要があります。次のようなテンプレートを作成することから始めます。

つまり、独自のテンプレート ( xxxx.scala.html) を作成し、そのコードを内部に追加する必要があります。その後、提供されたコードを使用してテンプレートにインポートします (カスタム フィールドを使用する各 scala テンプレートに忘れずに追加してください)。

@implicitField = @{ FieldConstructor(xxxx.f) }

Play のサンプルを確認してください。Forms サンプルは、Twitter ブートストラップで同様のアプローチを使用しています。

于 2012-05-01T08:26:37.633 に答える
0

Scala の暗黙的なキーワードのロジックに従うために、ドキュメントも暗黙的です ;)

Scala と Play は今のところ未熟すぎます。そのため、ドキュメントは非常に貧弱です。

この SOF の回答は非常に優れています: https://stackoverflow.com/a/15268122/1163081

その他の例については、Play ソースを確認することもできます: https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/views/html/

または、この男が解決策を発見したようです: https://groups.google.com/forum/#!msg/play-framework/2e1EqZJ-Qks/gXD1oo0IjfcJ

于 2014-07-31T18:41:50.937 に答える