gpt4 book ai didi

haskell - 从 Hamlet 链接到静态文件

转载 作者:行者123 更新时间:2023-12-03 15:20:46 24 4
gpt4 key购买 nike

我目前正在按照 tutorial on the Yesod Wiki 尝试 Yesod .

首先,我使用 yesod init 创建了一个 yesod 应用程序。 , 并创建了一个 Root 处理程序来呈现一个名为 homepage 的小部件文件:

getRootR = do
mu <- maybeAuth
defaultLayout $ do
h2id <- lift newIdent
setTitle "Home"
addWidget $(widgetFile "homepage")

我在静态目录调用 static/img/logo.png 中有一个图像文件

触摸后 Settings/staticFiles.hs ,我成功地从 default-layout.hamlet 链接了这个文件通过
<img src=@{StaticR img_logo_png}

现在问题出现了,我想在我的 homepage 中包含这个静态文件。小部件,使用完全相同的代码行。编译时出现以下错误:
Handler/Root.hs:19:21:
Not in scope: `img_logo_png'
In the result of the splice:
$(widgetFile "homepage")
To see what the splice expanded to, use -ddump-splices
In the first argument of `addWidget', namely
`$(widgetFile "homepage")'
In the expression: addWidget ($(widgetFile "homepage"))

所以我的问题是:如何在使用 widgetFile 定义的小部件中链接静态资源,为什么它在默认布局模板中表现不同?

最佳答案

您需要向 Handler/Root.hs 添加导入:

import Settings.StaticFiles

如果一个 hamlet 文件需要它,那么调用该 hamlet 文件的任何 handler.hs 文件都需要先导入它。 default-layout.hamlet 不需要任何更改的原因是因为它在我相信 Application.hs 的某个地方被调用,它几乎可以导入所有内容,包括静态内容。

关于haskell - 从 Hamlet 链接到静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7824915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com