2011-11-28 9 views
3

HeistテンプレートをWebアプリケーションにSnapを使用して前処理するフックを追加したいとします。私の単純なアプローチは、これまで自分のアプリケーションの初期化に次のコードを使用することであった:Snap Web Frameworkを使用してHeistテンプレートのOnLoadフックを追加する

app :: SnapletInit App App 
app = makeSnaplet "app" "The main web application" Nothing $ do 
    -- ... 
    h <- nestSnaplet "heist" heist $ heistInit "resources/templates" 
    -- ... 
    modifyHeistTS . addOnLoadHook $ myTemplateHook 

このコードはもちろんフックが追加されているので後のテンプレートは、「リソース/テンプレート」からロードされ、機能しません。

OnLoadフックを追加するために、最初のテンプレートがロードされる前にHeistテンプレートの状態を変更するにはどうすればよいですか?

+0

「heistInit」関数は、あなたが望むものを許可し、今githubに載っています。 – mightybyte

答えて

2

優秀な質問です。ライブラリの設計時には、これが私の見解です。私はこれをどのようにサポートし、あなたに戻っていくのが最善かについて考えるでしょう。

すぐに回避するには、loadTemplates hereに渡されるテンプレート状態にフックを追加するものを挿入します。あるいは、Heistで直接emptyTemplateStateを変更することもできます。

更新:I addedこの問題を処理するheistInit関数。それは次のハッカーのリリースになるでしょう。それまではgithubから入手できます。

+0

この場合、フックはミッションクリティカルではありませんので、公式にサポートされているソリューションを待つことにします。あなたの努力と素晴らしい図書館に感謝します! – dflemstr

関連する問題