我目前正在使用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/