2016-04-13 7 views
2

私はYesod.ButからShakespearean Templates(Licius + Hamlet + Julius)を使いたいと思っています。奉仕者のLicius + Hamlet + Juliusの使用

type TestAPI 
    = "tests" :> Get '[JSON] [Test] 
    :<|> "test" :> Get '[JSON] Test 
    :<|> "TestHTML.html" :> Get '[HTML] Page_TestHTML 

serverTestAPI :: ServerT TestAPI AppM 
serverTestAPI = tests 
      :<|> test 
      :<|> testHtml 

data Page_TestHTML = Page_TestHTML 

instance ToMarkup Page_TestHTML where 
    toMarkup Page_TestHTML = builderHtml 

testHtml = return Page_TestHTML 

builderHtml = [shamlet| 
       $doctype 5 
       <html> 
        <head> 
         <title>Greeting2 
       <body> 
        <h2> Hello world HTML Qqqqq |] 

しかし、次のコードが動作していない:

data Page_TestHTML_2 = Page_TestHTML_2 

instance ToMarkup Page_TestHTML_2 where 
    toMarkup Page_TestHTML_2 = builderHtml_2 

testHtml_2 = return Page_TestHTML_2 

builderHtml_2 = do 
    $(luciusFile "templates/test/TestHTML2.lucius") 
    $(shamletFile "templates/test/TestHTML2.hamlet") 

私は(全体イェソドなし)使用人のために一緒にLicius +ハムレット+ジュリアスを構築することができますどのようにenter link description here作品から、次のコード?

+1

コンパイルエラーを追加できますか? – user2141650

+0

エラー:期待タイプと一致しませんでした 'T0を - > CSSの' 実際の型と 'ブレーズマークアップ-0.7.0.3:Text.Blaze.Internal.MarkupM A0' ラムダ式「\ _render_alwD - >(シェイクスピア-2.0.8:Text.Css.CssNoWhitespace(foldr($)...)) ... ' – QSpider

+5

タイプシグネチャを省略することは良い考えではないと人々はいつ理解していますか? – leftaroundabout

答えて

2

私はこの問題を解決することができました。 次のコードが機能します!

data Page_LoginHTML = Page_LoginHTML 

instance H.ToMarkup Page_LoginHTML where 
    toMarkup Page_LoginHTML = builderHtml 

loginHtml = return Page_LoginHTML 

cssStyle :: Html 
cssStyle = toHtml $ renderCssUrl undefined 
    [cassius| 
     .q-test-2 
      color: green 
    |] 

htmlBody :: Html 
htmlBody = 
    [shamlet| 
     <h1> Hamlet Login Render 
    |] 

builderHtml = H.docTypeHtml $ do 
    H.head $ do 
     H.title "Login" 
     H.style cssStyle 
    H.body htmlBody 

多分誰かにとって役に立ちます。

関連する問題