gpt4 book ai didi

haskell - 有没有办法在 Happstack 中获取 "current route"?

转载 作者:行者123 更新时间:2023-12-02 03:39:39 25 4
gpt4 key购买 nike

每当我在网站中使用表单时,我都需要向它传递一个“action”属性(我不想将其留空,因为我更喜欢验证标记)。现在它看起来像这样:

registerPage = dir "test" $ do
nullDir
let action = "/test" :: String
let mkForm = form action
let prefix = "register"
eForm <- happstackEitherForm mkForm prefix registerForm

对于操作与其所在页面相同的表单,我不喜欢像现在这样需要将 URL 写两次。有没有办法获取“当前 url”?

registerPage = dir "test" $ do
nullDir
action <- {- ... -}

到目前为止,我最好的选择是将操作转换为显式参数/变量

registerUrl :: String
registerUrl = "register"

registerPage = dir registerUrl $ do
nullDir
let action = "/" ++ registerUrl

但如果我这样做,那么我将有一个额外的参数,我需要命名该参数并将其传递给我的函数。我还认为需要这样做 "/"++ 有点难看。

最佳答案

你想要这个吗:

import Control.Monad (MonadPlus)
import Happstack.Server.SimpleHTTP (dir, ServerMonad)

dir' :: (MonadPlus m, ServerMonad m) => String -> (String -> m a) -> m a
dir' path handler = dir path (handler ("/" ++ path))

registerPage = dir' "test" $ \action -> do
nullDir
... use action ...

我不知道 dir' 是否已经存在于 Happstack 中。

关于haskell - 有没有办法在 Happstack 中获取 "current route"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20922847/

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