我想转换表单错误以将它们传递给flash消息。我该怎么办?
以下是我想要转换它们的代码:
newDb.fold(
hasErrors = { form =>
// here I want to translate errors to string for Flash messaging
Redirect(routes.Application.index).flashing("error" -> Messages("msg.new.validation.errors"))
},
success = { dbToInsert =>
MyDatabases.insert(dbToInsert)
val message = Messages("msg.new.success", dbToInsert.name)
Redirect(routes.Application.index).flashing("success" -> message)
}
)
谢谢
答案 0 :(得分:1)
尝试这样的事情:
def convert(text: String, messages: Seq[FormError]): String =
"""<div class="alert" role="alert">""" + text + formatMessages(messages) + "</div>"
private def formatMessages(messages: Seq[FormError]): String = {
if(messages.size > 0){
"<ul>" + messages.foldLeft("")((res,message) => res + "<li>" + message.message + "</li>") + "</ul>"
} else ""
}
然后按如下方式使用您的闪烁信息:
@Html(flash.get("error").getOrElse("Welcome!"))
然后像正常情况一样使用 CSS 设置消息的样式。您可以使用此convert
方法通过向div
标记添加类来创建具有不同颜色的成功和错误闪烁。
答案 1 :(得分:0)
如何转换它们取决于您希望它们采用何种格式,但您可以在Form.errors
表单实例的hasErrors
中找到它们。 Form.errors
是FormError
的序列,其中每个key
都有导致错误的字段messages
,args
即错误消息I18N密钥或实际消息views.html.helper.FieldElements.errors
1}}这是插入到消息中的值。
要将它们转换为人类可读的字符串,您可以通过{{1}}方法中的播放模板表单帮助来查看它是如何完成的:https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/views/helper/Helpers.scala#L26