如何实现defaultLayout以外的布局

Teh*_*nix 7 haskell yesod

我现在正在使用Yesod框架,并且自己认为制作一个小型CMS将是一个很好的项目.

目前我正在努力实现另一种布局而不是defaultLayout.比方说,对于CMS的管理区域,您将拥有一个与defaultLayout非常不同的adminLayout.

有没有办法"复制"defaultLayout,以及如何? - 或者我应该采取另一种方法吗?

另外,我对Yesod和Haskell都很新,但我正在咀嚼它:)

编辑:

正如您所看到的,我最终回答了自己的问题.这就是说,如果有人有更好的方法来解决这个问题,我会非常乐意接受他们的问题.

Teh*_*nix 13

在一位超级优秀的绅士[1]的帮助下,发生了一个小小的顿悟.对于希望做同样事情的未来googlers,我将简要解释它所做的一切:

我只是将它放在我需要它的处理程序中,您只需要导入以下内容:

import Yesod.Default.Config (appExtra)
Run Code Online (Sandbox Code Playgroud)

然后将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")
Run Code Online (Sandbox Code Playgroud)

那么你可以使用它,因为你使用defaultLayout.希望这会有所帮助,因为我长时间一直盯着错误--.-'...

[1] https://groups.google.com/forum/?fromgroups=#!topic/yesodweb/9KpfYBJBwJE