此软件包允许您在视图之间显示 Flash 消息。
将 Flash
添加到包依赖项(在您的 Package.swift
文件中)
dependencies: [
...,
.package(url: "https://github.com/nodes-vapor/flash.git", from: "4.0.0")
]
以及您的目标(例如 “App”)
targets: [
...
.target(
name: "App",
dependencies: [... "Flash" ...]
),
...
]
首先,请确保在需要时在任何地方都导入了 Flash
import Flash
public func configure(_ config: inout Config, _ env: inout Environment, _ services: inout Services) throws {
try services.register(FlashProvider())
}
您可以通过执行以下操作全局添加 Flash 中间件
func configure(_ app: Application) throws {
app.middleware.use(FlashMiddleware())
}
或者,您可以根据需要在各个路由组中添加中间件
router.grouped([SessionsMiddleware(driver: app.sessions.driver), FlashMiddleware()]) { router in
// .. routes
}
请注意,SessionsMiddleware
需要添加到与 Flash 相同的路由组中。
为了渲染 Flash 消息,您需要将 Flash Leaf 标签添加到您的应用程序中
func configure(_ app: Application) throws {
app.leaf.tags["flashes"] = FlashTag()
}
在设置 Flash 后,您现在可以在重定向时添加 Flash 消息,给定一个 Request
request.redirect(to: "/users").flash(.success, "Successfully saved")
request.redirect(to: "/users").flash(.info, "Email sent")
request.redirect(to: "/users").flash(.warning, "Updated user")
request.redirect(to: "/users").flash(.error, "Something went wrong")
此软件包附带一个 Leaf 标签,使显示 Flash 消息变得容易和方便。 我们建议使用 Bootstrap 包 来渲染 Bootstrap 元素,但是此软件包不依赖于它。
可以使用以下方法循环访问不同类型的消息
all
:所有 Flash 消息,无论类型如何。successes
:所有类型为 success
的 Flash 消息。information
:所有类型为 info
的 Flash 消息。warnings
:所有类型为 warning
的 Flash 消息。errors
:所有类型为 error
的 Flash 消息。此外,使用 message
属性,您将能够提取 Flash 消息的消息内容。 您还可以使用 kind
属性获取类型。 此属性将包含以下值之一:success
、info
、warning
或 error
。 最后,您可以使用 bootstrapClass
获取相关的 Bootstrap 类
success
将返回 success
。info
将返回 info
。warning
将返回 warning
。error
将返回 danger
。在不使用任何依赖项的情况下,可以这样渲染 Flash 消息
<div class="alerts">
#for(flash in flashes().all):
Message: #(flash.message)
Type: #(flash.kind)
#endfor
</div>
以下示例使用 Vapor 3 的 Bootstrap 包 来生成警报 html。
<div class="alerts">
#for(flash in flashes().all):
#bs:alert(flash.bootstrapClass) {
#(flash.message)
}
#endfor
</div>
将 Flash html 添加到一个文件中,并将其嵌入到其余视图中或通过基本布局嵌入,例如:#embed("alerts")
。
此软件包由 Nodes 的 Vapor 团队开发和维护。
此软件包是根据 MIT 许可证 授权的开源软件