我想创建我的Yesod网站的一部分,只有在存在某些配置设置时才应启用该部分。所以我有这样的事情(省略细节):
data MasterData = MasterData
{ subData :: Maybe SubData
}
data SubData = SubData { ... }
mkYesodData "SubData" [parseRoutes| ... |]
mkYesodData "MasterData" [parseRoutes|
/sub SubsiteR SubData getSubData
|]
如果/sub
为subData
,我怎么能让我的网站为所有以Nothing
开头的网址返回HTTP 404?
答案 0 :(得分:4)
一种方法是在Maybe
周围创建一个提供YesodSubDispatch实例的newtype包装器,并在其参数为Nothing
时返回404。
这对于子网站来说是一次有趣的练习;你可以view the code as a Gist。一个技巧是,当您链接到该子网站时,您需要使用OptionalRoute
包装您的构造函数。