2012-11-12 79 views
7

我現在正在與Yesod框架一起玩耍,並認爲製作kindda小型CMS將是一個不錯的項目。如何實現defaultLayout以外的佈局

目前我正在努力如何實現另一個佈局比defaultLayout。比如說,對於CMS的管理區域,您將擁有一個與defaultLayout完全不同的adminLayout。

有沒有辦法「複製」defaultLayout,以及如何? - 或者我應該採取另一種方法嗎?

而且,我是相當新的都耶索德和Haskell,但我嚼我的方式,通過它:)

編輯:

正如你可能會看到,我結束了回答我的問題。這就是說,如果有人有更好的方法去解決這個問題,我會很樂意接受他們的問題。

回答

13

經過一位超級紳士的幫助[1],發生了一個小的頓悟。對於未來的Google希望做同樣的事情,我將簡要地解釋所有的花:

我只是把這個在我需要它在處理程序,所有你需要的是輸入以下內容:

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