首页 > 解决方案 > 如何使用带有路由参数的 hamlet 模板?

问题描述

我正在开发基于yesod-postgres堆栈模板的 yesod 应用程序。我定义了一条路线config/routes,其形式为:

foo/edit/#Text EditFooR GET

在我的小村庄模板中,我想写

<form method=post action=@{EditFooR}#forms enctype=#{formEnctype}>
                    ^{formWidget}

                    <button type="submit">
                        Submit

在我的处理程序中,我想写:

getEditFooR :: T.Text -> Handler Html
getEditFooR name = do
    ....
    text <- findTextByName name

    (formWidget, formEnctype) <- generateFormPost (editFooForm text)
    defaultLayout $ do
        $(widgetFile "editFoo")

除了我需要为@{EditFooR}路由提供参数。这在 Hamlet 文件/处理程序中是如何完成的?

标签: formsroutesyesodhamlet

解决方案


答案是 .hamlet 模板应该具有以下格式:

<form method=post action=@{EditFooR fooName}#forms enctype=#{formEnctype}>
                ^{formWidget}

                <button type="submit">
                    Submit

并且Handler应该具有以下格式:

getEditFooR :: T.Text -> Handler Html
getEditFooR name = do
    ....
    text <- findTextByName name
    fooName <- "something or other"

   (formWidget, formEnctype) <- generateFormPost (editFooForm text)
       defaultLayout $ do
       $(widgetFile "editFoo")

推荐阅读