我目前正在使用Yesod框架,并以为自己做一个小型CMS是一个好项目。

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

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

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

编辑:

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

最佳答案

在一位 super 友善的绅士[1] 的帮助下,发生了小小的顿悟。对于希望做同样事情的 future 谷歌员工,我将简要解释一下:

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

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

关于haskell - 如何实现 defaultLayout 以外的布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13348222/

10-09 15:18