Haskell 链接到来自Hamlet的静态文件
我目前正在按照以下步骤来试验YesSOD 首先,我使用Haskell 链接到来自Hamlet的静态文件,haskell,yesod,Haskell,Yesod,我目前正在按照以下步骤来试验YesSOD 首先,我使用yesod init创建了一个yesod应用程序,并创建了一个根处理程序,用于呈现名为homepage的小部件文件: getRootR = do mu <- maybeAuth defaultLayout $ do h2id <- lift newIdent setTitle "Home" addWidget $(widgetFile "homepage") 现在出现的问题是,我想使用完全相同的代码行将此
yesod init
创建了一个yesod应用程序,并创建了一个根处理程序,用于呈现名为homepage
的小部件文件:
getRootR = do
mu <- maybeAuth
defaultLayout $ do
h2id <- lift newIdent
setTitle "Home"
addWidget $(widgetFile "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
如果一个哈姆雷特文件需要它,那么调用该哈姆雷特文件的handler.hs文件将需要首先导入它。default-layout.hamlet不需要任何更改的原因是它在我相信的Application.hs中的某个地方被调用,它几乎可以导入所有内容,包括静态内容
import Settings.StaticFiles