我目前正在使用Yesod框架,并且自己认为制作一个小型CMS将是一个很好的项目。
目前我正在努力实现另一种布局而不是defaultLayout。比方说,对于CMS的管理区域,您将拥有一个与defaultLayout非常不同的adminLayout。
有没有办法“复制”defaultLayout,以及如何? - 或者我应该采取另一种方法吗?
另外,我对Yesod和Haskell都很陌生,但我正在咀嚼它:)
编辑:
正如您所看到的,我最终回答了自己的问题。这就是说,如果有人有更好的方法来解决这个问题,我将非常乐意接受他们的问题。
答案 0 :(得分:13)
在一位超级优秀的绅士[1]的帮助下,发生了一个小小的顿悟。对于希望做同样事情的未来googlers,我将简要解释它所做的一切:
我只是将它放在我需要它的处理程序中,您只需要导入以下内容:
import Yesod.Default.Config (appExtra)
然后将adminLayout定义为
adminLayout :: Widget -> Handler Html
adminLayout widget = do
master <- getYesod
mmsg <- getMessage
pc <- widgetToPageContent $ do
$(combineStylesheets 'StaticR
[ css_normalize_css
, css_bootstrap_css
])
$(combineScripts 'StaticR
[ js_jquery_js
, js_bootstrap_min_js
])
$(widgetFile "admin-layout")
giveUrlRenderer $(hamletFile "templates/admin-layout-wrapper.hamlet")
然后您可以使用它,因为您使用defaultLayout。希望这会有所帮助,因为我长时间一直盯着自己的错误 - &#39; ...
[1] https://groups.google.com/forum/?fromgroups=#!topic/yesodweb/9KpfYBJBwJE