在 Vapor 中的 /Views 中查找嵌套文件夹

Find nested folders inside /Views in Vapor

我正在尝试在 Views 目录中组织我的 Leaf 视图,但无法在 Views 中创建嵌套目录。我有一个这样的header

<header>
    <nav>
        <ul>
            <li><a href="/test">Test</a></li>
        </ul>
    </nav>
</header>

/test 实际上包含在 Views/TestFolder 中,因为我可能认为它在 Views 文件夹中递归搜索,但事实并非如此。如果我尝试访问 test 页面,我会收到以下错误(我认为这是完全有道理的):

{
  "error": true,
  "reason": "No file was found at path: /Users/eirik/Documents/Utvikling/Jobb/AaseSoftware/Resources/Views/test.leaf"
}

我也不知道在routes.swift中我应该如何定义这个路由。现在我正在这样做:

router.get("/test") { req -> Future<View> in
    return try req.view().render("test")
}

但我猜它只会直接在 Views 中查找 test.leaf 文件。如何将 Leaf 文件放入 Views 内的嵌套文件夹中?

req.view() 始终指向默认文件夹。如果您转到 LeafProvider class,您将看到如下默认设置。

viewsDir: dir.workDir + "Resources/Views"

对于您的情况,您需要从正确的路径进行渲染 render("TestFolder/test")。请参阅下面的代码。

 router.get("/test") { req -> Future<View> in
        return try req.view().render("TestFolder/test")
    }