7

我目前正在玩弄 Yesod 框架,并心想,制作一个有点小的 CMS 将是一个好项目。

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

有没有办法“复制”默认布局,以及如何?- 或者我应该采取其他方法吗?

此外,我对 Yesod 和 Haskell 都很陌生,但我正在努力解决它:)

编辑:

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

4

1 回答 1

13

在一位超级好人[1]的帮助下,一个小小的顿悟发生了。对于希望做同样事情的未来谷歌人,我将简要解释一下:

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

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 一样使用它。希望这会有所帮助,因为我很长一段时间都在盯着自己的错误视而不见-.-' ...

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

于 2012-11-12T17:38:19.750 回答