0

足場サイトでyesod0.9.3を使用しています。結果のページにウィジェットを1回だけ含める(または、できれば、ウィジェットを1回だけ含めることができるようにする)方法はありaddScriptますaddStylesheetか?このような(依存関係の)ウィジェットはページハンドラーで呼び出すことができますが、これは、必要なときに呼び出すだけの自己完結型のエンティティとしての(依存関係のある)ウィジェットの概念全体を壊します。

例:

addCommonStyle :: Widget
addCommonStyle = toWidgetHead [lucius|.some-class {background: yellow}|]

styledP :: Text -> Widget
styledP t = do
    addCommonStyle
    [whamlet|<p .some-class>#{t}|]

getTestR :: Handler RepHtml
getTestR = defaultLayout $ do
    styledP "First paragraph"
    styledP "Second paragraph"

これにより、次のようなスタイルシートへのリンクを含むHTMLが作成されます。

.some-class{background:yellow}.some-class{background:yellow}

つまり、addCommonStyleは2回含まれています。

4

1 に答える 1

1

最も簡単な解決策は、ファイル addCommonStyleに の定義を入れることです。defaultLayoutFoundation.hs

常に必要としない場合は、呼び出しdefaultLayoutを含むscaffolded のパターンに従って、独自のレイアウト関数を作成できます。addCommonStyle

于 2011-11-28T11:11:58.507 に答える