Tôi vẫn đang vật lộn với việc xác thực biểu mẫu và người trợ giúp biểu mẫu trong Play 2.0. Tôi có màn hình đăng nhập mà tôi sử dụng cùng với Twitter Bootstrap. Vì vậy, hình thức đăng nhập của tôi trông như thế này:Xác thực biểu mẫu và trợ giúp biểu mẫu
@helper.form(routes.Application.authenticate, 'class -> "form-horizontal") {
<fieldset>
<legend>@Messages("login")</legend>
@if(loginForm.hasGlobalErrors) {
<div class="alert alert-error">
<a class="close" data-dismiss="alert">×</a>
@loginForm.globalError.message
</div>
}
@if(flash.contains("success")) {
<div class="alert alert-success">
<a class="close" data-dismiss="alert">×</a>
@flash.get("success")
</div>
}
@inputText(loginForm("email"), '_label -> "Email")
@inputText(loginForm("password"), '_label -> Messages("login.password"))
<div class="form-actions">
<button type="submit" class="btn btn-success">@Messages("button.doLogin")</button>
@Messages("or")
<a class="btn btn-warning" href="routes.LandingPage.index">@Messages("button.doCancel")</a>
</div>
</fieldset>
}
Và twitter của tôi bootstrap lĩnh vực trông giống như sau:
@(elements: helper.FieldElements)
@**************************************************
* Generate input according twitter bootsrap rules *
**************************************************@
<div class="control-group @if(elements.hasErrors) {error}">
<label class="control-label" for="@elements.id">@elements.label</label>
<div class="controls">
@elements.input
<span class="help-inline">@elements.infos.mkString(", ")</span>
</div>
</div>
Đây là kết quả:
Những gì tôi không hiểu :
1, W hy là văn bản trợ giúp hiển thị tất cả thời gian te (ở bên phải của trường nhập)
Văn bản trợ giúp đến từ @elements.infos.mkString(", ")
. Vì vậy, xóa dòng này sẽ xóa văn bản trợ giúp. Hoặc bạn có thể chuyển một chuỗi trống để ngăn chặn văn bản trợ giúp hiển thị: '_help -> ""
2, Cách chỉ hiển thị văn bản trợ giúp nếu xảy ra lỗi?
Trợ giúp văn bản có thể được bổ sung khi sử dụng mã này: @elements.errors(elements.lang).mkString(", ")
3, các thông số có thể vượt qua một trường nhập văn bản là gì? Tôi cũng muốn chuyển tên lớp, nhưng tôi không biết cách làm ...
Tôi có thể xác định đối số tùy chỉnh của mình để chuyển (tức là lớp hoặc trình giữ chỗ): class="@elements.args.get('_class)
và sau đó tôi có thể chuyển nó như sau: '_class -> "classname"
4, Tôi có thể xác định nhiều hơn một implicitFieldConstructors
trong một phần của mẫu không? Bởi vì đối với các hộp kiểm tôi muốn có một fieldConstructor khác so với các hộp và textarea, nhưng làm thế nào để làm điều này?
Ví dụ cho điều này: Trong mẫu máy tính cơ sở dữ liệu một lĩnh vực bootstrap Twitter được định nghĩa, nhưng sau đó nó được sử dụng như sau:
@inputText(loginForm("email"), '_label -> "Email")
Tại sao là tên ở đây inputText và không chỉ đầu vào? Bởi vì cũng có một input.scala.html?
Vì vậy, nếu tôi muốn tạo một trình xử lý trường cho hộp kiểm, cách sử dụng? Các định dạng sau được đem lại cho tôi lỗi:
@checkBoxHandler = @{ FieldConstructor(s2ftheme.constructors.checkbox.render) }
@checkbox(loginForm("remember"), '_label -> Messages("login.remeberme"))(handler = implicitFieldConstructor)
Tôi nhận được thông báo lỗi:
not enough arguments for method apply: (implicit handler: views.html.helper.FieldConstructor, implicit lang: play.api.i18n.Lang)play.api.templates.Html in object checkbox. Unspecified value parameter lang.
Tôi nghĩ rằng tôi đang thiếu khái niệm ở đây ... Cảm ơn.
Ok, có ý nghĩa hơn, tôi cũng có thể cung cấp một FieldConstructor ngầm khác cho chúng ta hãy nói một Hộp kiểm, vì hộp kiểm tôi muốn đánh dấu khác? – adis
Khóa dịch được xây dựng như thế nào? Nếu tôi muốn dịch văn bản "Trường này là bắt buộc"? – adis
Bạn có thể truyền hàm tạo trường vào hộp kiểm '@'. –