Flash ⚡️

Swift Version Vapor Version Circle CI codebeat badge codecov Readme Score GitHub license

此软件包允许您在视图之间显示 Flash 消息。

image

安装

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 相同的路由组中。

添加 Leaf 标签

为了渲染 Flash 消息,您需要将 Flash Leaf 标签添加到您的应用程序中

func configure(_ app: Application) throws {
    app.leaf.tags["flashes"] = FlashTag()
}

使用 Flash 消息

在设置 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")

HTML 示例

此软件包附带一个 Leaf 标签,使显示 Flash 消息变得容易和方便。 我们建议使用 Bootstrap 包 来渲染 Bootstrap 元素,但是此软件包不依赖于它。

可以使用以下方法循环访问不同类型的消息

此外,使用 message 属性,您将能够提取 Flash 消息的消息内容。 您还可以使用 kind 属性获取类型。 此属性将包含以下值之一:successinfowarningerror。 最后,您可以使用 bootstrapClass 获取相关的 Bootstrap 类

不使用 Bootstrap 包

在不使用任何依赖项的情况下,可以这样渲染 Flash 消息

<div class="alerts">
#for(flash in flashes().all):
        Message: #(flash.message)
        Type: #(flash.kind)
    #endfor
</div>

使用 Bootstrap 包

以下示例使用 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 许可证 授权的开源软件