Yesod条件子网站

时间:2014-08-01 11:44:55

标签: haskell yesod

我想创建我的Yesod网站的一部分,只有在存在某些配置设置时才应启用该部分。所以我有这样的事情(省略细节):

data MasterData = MasterData
  { subData :: Maybe SubData
  }

data SubData = SubData { ... }

mkYesodData "SubData" [parseRoutes| ... |]

mkYesodData "MasterData" [parseRoutes|
  /sub SubsiteR SubData getSubData
|]

如果/subsubData,我怎么能让我的网站为所有以Nothing开头的网址返回HTTP 404?

1 个答案:

答案 0 :(得分:4)

一种方法是在Maybe周围创建一个提供YesodSubDispatch实例的newtype包装器,并在其参数为Nothing时返回404。

这对于子网站来说是一次有趣的练习;你可以view the code as a Gist。一个技巧是,当您链接到该子网站时,您需要使用OptionalRoute包装您的构造函数。