如何将操作传递到Application.Helper.View



Application.Helper.View中,我想创建一个HTML组件,如:

button :: action -> Text -> Html
button action label = [hsx|<a href={urlTo action}>{label}</a>|]

我可以在各种视图中使用,如:{button NewSessionAction "Login"}

但是,操作的正确类型签名是什么?检查urlTo的来源(https://ihp.digitallyinduced.com/api-docs/src/IHP.RouterSupport.html#urlTo)显示action符合HasPath,但我仍然不确定应该如何编写函数。

我是Haskell的新手,所以任何关于";为什么";这将是一个很大的帮助。

(由@pedrofurla和@MarcScholten回答(

  1. 导入IHP.RouterRelude:
import qualified IHP.RouterPrelude as Router
  1. 将HTML组件函数更改为:
button :: (?context :: context, ConfigProvider context, Router.HasPath action) => action -> Text -> Html
button action label = [hsx|<a href={Router.urlTo action}>{label}</a>|]

相关内容

最新更新