2012-10-15 17 views
7

Tôi muốn tùy chỉnh thông báo lỗi mặc định "Trường này là bắt buộc" khi sử dụng "nonEmptyText" constaint trong trình trợ giúp biểu mẫu Scala.Thông báo lỗi cụ thể theo trường trong Play Framework/Scala forms

Dưới đây là một ví dụ mà tôi muốn để tùy chỉnh:

val form = Form(
    tuple("email" -> nonEmptyText, "password" -> nonEmptyText) 
     verifying ("Invalid email or password.", result => result match { 
     case (email, password) => { 
      User.authenticate(email, password).isDefined 
     } 
     })) 

cách tối ưu trong conf của tôi/tin nhắn nộp tôi có thể cung cấp một lỗi lĩnh vực cụ thể:

error.email.required=Enter your login email address 
error.password.required=You must provide a password 

Nhưng trong trường hợp tồi tệ nhất tôi sẽ hài lòng với thông điệp ký tự đại diện sử dụng tên trường:

error.required=%s is required 
#would evaluate to "password is required", which I would then want to capitalize 

Tôi thấy biểu thức% s này trong một số tài liệu Play 1.x nhưng nó dường như không hoạt động nữa.

Cảm ơn bạn trước sự giúp đỡ của bạn!

Trả lời

8

Cố gắng thả việc sử dụng một nonEmptyText và sử dụng một lĩnh vực đơn giản text với một xác nhận tùy chỉnh:

tuple(
    "email" -> text.verifying("Enter your login email address", {!_.isEmpty}), 
    "password" -> text.verifying("You must provide a password", {!_.isEmpty}) 
) 

Sau đó bạn có thể di chuyển một bước xa hơn và trao đổi String bên trong mệnh đề verifying cho một cuộc gọi đến play.api.i18n.Messages đối tượng:

tuple(
    "email" -> text.verifying(Messages("error.email.required"), {!_.isEmpty}), 
    "password" -> text.verifying(Messages("error.password.required"), {!_.isEmpty}) 
) 

Lưu ý rằng đây là mã chưa được kiểm tra, nhưng nó phải chỉ ra hướng.

Chúc may mắn

+0

Cảm ơn @fynn Tôi sẽ chụp ảnh này. – kgx

+0

Mã của bạn hoạt động rất tốt. Cảm ơn bạn lần nữa vì đã chỉ cho tôi đúng hướng! – kgx

+0

Không, sự cố. Tôi rất vui vì tôi có thể giúp ... – fynn

Các vấn đề liên quan