【问题标题】:need help for widget probleme with yesod需要帮助解决 yesod 的小部件问题
【发布时间】:2013-11-30 22:38:59
【问题描述】:

在 yesod 中,我有 etat.hamlet,我需要创建一个带有可变会话的小部件,以便将它与其他文件 .hamlet 放在一起

我的代码是这样的,但我收到一个错误

etatwidget = do
    sess <- getSession
    let mence = unpack $ case Map.lookup "ence" sess of
        Just a -> a
        Nothing -> "Nothing"        
    $(widgetFile "etat")

错误:

Handler\Home.hs:585:5: parse error on input `$('
Build failure, pausing...

【问题讨论】:

    标签: haskell yesod


    【解决方案1】:

    $(widgetFile "etat") 是一个 Template Haskell 拼接,所以首先要检查的是 TemplateHaskell 扩展是否启用。您可以通过添加来启用它

    {-# LANGUAGE TemplateHaskell #-}
    

    到源文件的顶部。

    P.S.:顺便说一句,您还需要将 JustNothing 的情况进一步缩进一级:

        let mence = unpack $ case Map.lookup "ence" sess of
                Just a -> a
                Nothing -> "Nothing" 
    

    【讨论】:

    • 我添加了 {-# LANGUAGE TemplateHaskell #-} 但我收到了错误提示! just 和 Nothing 怎么样?能给个例子吗?
    • @user3002631 - 更新了缩进问题的答案。尽管您的问题似乎无关紧要,但它也是一个语法错误,因此修复它可能有助于隔离问题。
    • Also.... 请注意,{-# LANGUAGE TemplateHaskell #-} 行必须出现在文件的顶部(即,其上方不得出现任何行或空格)。我还注意到您在上一个问题中创建了一个类似的文件,并且该文件有效,因此它可以帮助您将该文件用作模板以使其正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多