1

これをPlayユーザーグループに投稿しました。私は唯一の見解を説明しているので、見解、あるいはおそらく答えを得ることを望んでいます;-)

ネストされたフォームは素晴らしいですが、javascriptまたはscalaテンプレートのいずれかに定型文を追加する1つの不具合があります。

たとえば、次のようになります。

@inputText(field = _form("user.email"),
    '_label-> "Email Address*",
    'class-> "required email",
    'placeholder-> "jdoe@gmail.com"
)

生成される入力フィールドは次のようになります。

<input id="user_email" name="user.email" ...>

ここで、クライアント側の電子メールアドレスを検証する場合は、DOMIDを参照する必要があります。$('#user_email')

$('#email')より自然な場所。

テンプレートでid属性を手動で設定できることはわかっていますが、デフォルトでは、ネストされた名前(この場合はユーザー)をid属性から削除することをお勧めします。

githubビューのヘルパーディレクトリを見ると、生成されたIDにアクセスできる場所(つまり、オーバーロードする必要のあるファイルとその方法)が見つかりません。

誰かがこれをやってのける方法やより良いアプローチを持っている方法を知っていますか?

4

1 に答える 1

1

フィールドのIDが自動生成される場所は次のとおりです。

https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/data/Form.scala#L274

その動作をオーバーライドする方法は実際にはありませんが@inputText、HTMLを生成するときにIDから「user_」の部分を取り除く独自のヘルパーを作成することはできます。

基本的に、デフォルトのヘルパーをコピーして貼り付け、置き換えます

<input type="text" id="@id" ...

あなた自身のコードで、例えば

<input type="text" id="@processFieldId(id)" ...

または(テストされていません!):

<input type="text" id="@(id.split('_').last)" ...

次に、カスタムヘルパーをテンプレートにインポートし、を使用するのと同じように使用します@inputText

于 2012-08-10T00:28:36.440 に答える