Documentation

You are viewing the documentation for the 2.3.x release series. The latest stable release series is 2.4.x.

§Form şablon yardımcıları

Play form alanlarını HTML şablonlarında sunmanıza yardımcı olmak için birçok yardımcı sağlar.

§Bir <form> etiketi yaratmak

İlk yardımcı <form> etiketini yaratır. Bu, otomatik olarak action ve method etiket parametrelelerini, ilettiğiniz ters rotaya göre ayarlayan basit bir yardımcıdır:

@helper.form(action = routes.Application.submit()) {

}

Ayrıca üretilecek HTML’ye eklenecek bir ilave parametre dizisi de geçirebilirsiniz:

@helper.form(action = routes.Application.submit(), 'id -> "myForm") {

}

§Bir <input> elementi sunmak

views.html.helper paketinde birçok girdi yardımcısı vardır. Onları bir form alanı ile beslersiniz ve onlar uyan HTML form kontrolünü, doldurulmuş değer, kısıtlama ve hatalarla gösterirler:

@(myForm: Form[User])

@helper.form(action = routes.Application.submit()) {

    @helper.inputText(myForm("email"))

    @helper.inputPassword(myForm("password"))

}

As for the form helper, you can specify an extra set of parameters that will be added to the generated HTML:

@helper.inputText(myForm("email"), 'id -> "email", 'size -> 30)

Not: İsimleri _ ile başlayanlar hariç, bütün ilave parametreler üretilen HTML’ye eklenecektir. Alt çizgi ile başlayan argümanlar (ileride göreceğimiz) alan constructor argümanları için ayrılmıştır.

§HTML girdi üretimini kendi kendinize halletmek

Aynı zamanda istenen HTML sonucunu kodlamanıza izin veren daha genel bir input yardımcısı da vardır:

@helper.input(myForm("email")) { (id, name, value, args) =>
    <input type="date" name="@name" id="@id" @toHtmlArgs(args)>
}

§ Alan constructor’ları

Sunulan bir alan sadece bir <input> etiketi içermekle kalmayıp, aynı zamanda <label> ve CSS çatınızda field’ı süslemek için kullanılan başka birtakım etiketleri de içerebilir.

Bütün girdi yardımcıları bu kısmı üstlenen bir FieldConstructor alırlar. Varsayılanı (yani kapsamda başka bir field constructor’ı yoksa kullanılan) bunun gibi bir HTML üretir:

<dl class="error" id="email_field">
    <dt><label for="email">Email:</label></dt>
    <dd><input type="text" name="email" id="email" value=""></dd>
    <dd class="error">This field is required!</dd>
    <dd class="error">Another error</dd>
    <dd class="info">Required</dd>
    <dd class="info">Another constraint</dd>
</dl>

Bu varsayılan alan constructor’ı input yardımcı argümanlarında geçirebileceğiniz ilave seçenekleri destekler:

'_label -> "Custom label"
'_id -> "idForTheTopDlElement"
'_help -> "Custom help"
'_showConstraints -> false
'_error -> "Force an error"
'_showErrors -> false

§Kendi field constructor’ınızı yazmak

Sıklıkla, kendi alan constructor’ınızı yazmak isteyeceksiniz. Şöyle bir şablon yazarak başlayın:

@(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>

Bunu views/ içine kaydedin ve myFieldConstructorTemplate.scala.html ismini verin.

Not: Bu sadece basit bir örnektir. Bunu istediğiniz kadar karmaşıklaştırabilirsiniz. Aynı zamanda @elements.fieldı kullanarak orijinal alana erişebilirsiniz.

Şimdi bunu kullanarak bir yerlerde bir FieldConstructor yaratın:

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

@inputText(myForm("email"))

§Tekrar eden değerleri işlemek

Son yardımcı tekrar eden değerler için girdi yaratmayı kolaylaştırır. Bu şekilde bir form tanımınız olduğunu varsayın:

public class UserForm {
    public String name;
    public List<String> emails;
}

Şimdi emails alanı için formun içerdiği kadar çok girdiyi üretmek zorundasınız. Bunun için basitçe repeat yardımcısını kullanın:

@helper.inputText(userForm("name"))

@helper.repeat(userForm("emails"), min = 1) { emailField =>

    @helper.inputText(emailField)

}

Karşılık gelen form verisi boş olsa bile gösterilecek en az sayıda alanı belirtmek için min parametresni kullanın.

Sonraki: CSRF karşısında korunmak


Dokümantasyonun bu çevirisi Play ekibi tarafından yapılmamaktadır. Eğer bir hata bulduysanız, bu sayfanın kaynak kodu burada bulunmaktadır. Dokümantasyon yönergelerini okuduktan sonra lütfen katkı yapmaktan çekinmeyin.