3

setMessageでタイプセーフなURLを使用するにはどうすればよいですか?

変わりたい

 ...
 setMessage [shamlet|<span .warning>Warning! See Help.|]
 ...

リンクを含むメッセージへ。

これまでに集められたものから、どういうわけかこのように動作するはずです

 ...
 renderer <- getUrlRender
 let html = [hamlet|<span .warning>Warning! See #
                     <a href=@{HelpR}> Help!|]
 setMessage $ toHtml $ html renderer
 ...

しかし、そのコードは、ファイル全体に紛らわしいエラーメッセージを表示するだけです。

私はシェイクスピアのテンプレートに関する印刷されたYesodBookの章を読みましたが、関係するタイプについてはあまり明確ではないことがわかりました。たとえば、どのタイプが[hamlet|...|]|生成されますか?URL補間がないと、ghciレポートt -> Markupが表示されますが、URL補間が含まれていると、エラーが発生します。

私はさらに、関係するすべてのタイプの同義語に混乱しています。たとえば、を期待しながら[shamlet|...|]、タイプの何かを提供します。これらを簡単に調べる方法がわかりません:Hoogleはトピックについて何も見つけないことがよくありますが、Googleは常に古いバージョンを見つける可能性があります(例は機能しなくなります)-最終的には最新バージョンに到達しますが、場所はありますこれらの概要を簡単に把握できますか?(ghciはタイプのすべての同義語をリストできますか?)HtmlsetMessageHtml ()

私は実際にメッセージを純粋に機能的なコードフラグメントで生成したいことに注意してください。これは後でハンドラーによって使用されます。そのため、集落が指定されている場所からURLレンダリングを分離したいと思います。正しい方向へのポインタをありがとう!

4

1 に答える 1

5

getUrlRenderParamsを使用したいと思います。不思議なことに、今日IRCで関連する議論が起こりました。Hamletテンプレートは、最初の引数としてURLレンダリング関数を取り、その関数は、タイプセーフなURLとクエリ文字列パラメーターのリストの2つのパラメーターを受け取る必要があります。getUrlRenderは、クエリ文字列パラメーターを受け取らない関数を返します。そのため、代わりにgetUrlRenderParamsが必要です。

于 2013-03-06T17:58:55.710 に答える