Play Framework - 为 flash 消息转换表单错误
Play Framework - convert form errors for flash messaging
我想转换表单错误以将它们传递给即显消息。我该怎么做?
这是我要转换它们的代码:
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)
}
)
谢谢
如何转换它们当然取决于您想要它们的格式,但您可以在 hasErrors
表单实例的 Form.errors
中找到它们。 Form.errors
是 FormError
的序列,其中每个序列都有导致错误的字段 key
,messages
是错误消息 I18N 键或实际消息,并且 args
这是要插入到消息中的值。
要将它们转换为人类可读的字符串,您可以看看 views.html.helper.FieldElements.errors
方法中的播放模板表单助手是如何完成的:https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/views/helper/Helpers.scala#L26
尝试这样的事情:
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
方法通过将 class 添加到 div
标记来创建具有不同颜色的成功和错误闪烁。
我想转换表单错误以将它们传递给即显消息。我该怎么做?
这是我要转换它们的代码:
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)
}
)
谢谢
如何转换它们当然取决于您想要它们的格式,但您可以在 hasErrors
表单实例的 Form.errors
中找到它们。 Form.errors
是 FormError
的序列,其中每个序列都有导致错误的字段 key
,messages
是错误消息 I18N 键或实际消息,并且 args
这是要插入到消息中的值。
要将它们转换为人类可读的字符串,您可以看看 views.html.helper.FieldElements.errors
方法中的播放模板表单助手是如何完成的:https://github.com/playframework/playframework/blob/master/framework/src/play/src/main/scala/views/helper/Helpers.scala#L26
尝试这样的事情:
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
方法通过将 class 添加到 div
标记来创建具有不同颜色的成功和错误闪烁。