如何实现defaultLayout以外的布局

时间:2012-11-12 17:14:20

标签: haskell yesod

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

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

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

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

编辑:

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

1 个答案:

答案 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