2013-03-06 5 views
3

setMessage와 함께 유형 안전 URL을 사용하려면 어떻게해야합니까?setMessage와 함께 유형 안전 URL을 사용 하시겠습니까? (샴페인 대 햄릿)

나는 링크가 포함 된 메시지에

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

을 변경하고 싶습니다. 내가 지금까지 수집 할 수있는 것을에서

는,이

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

처럼 어떻게 든 일을한다고하지만 그 코드는 모든 파일을 통해 나에게 혼란 오류 메시지를 제공합니다.

Shakespearian 템플릿에 인쇄 된 Yesod Book 장을 읽었지만 관련된 유형에 대해서는 그다지 명확하지 않습니다. 예를 들어 [hamlet|...|]|은 어떤 유형을 생산합니까? URL 보간이 없으면 ghci는 t -> Markup을보고하지만 URL 보간을 사용하면 오류가 발생합니다.

나는 모든 관련 동의어, 예를 들어. [shamlet|...|]Html 유형을 제공하지만 setMessageHtml()을 필요로합니다. 나는 이것을 쉽게 찾는 법을 모른다 : Hoogle은 종종 그 주제에 관해 아무것도 발견하지 못한다. 구글은 항상 구식 버전을 발견한다. (예를 들어 더 이상 작동하지 않는 예들과 함께) - 나는 최신 버전을 결국 얻을 수 있지만, 이것들에 대한 간단한 개요를 얻을 수 있습니까? (ghci는 타입에 대한 모든 동의어를 나열 할 수 있습니까?)

실제로는 핸들러에서 사용되는 순수 기능 코드 조각으로 메시지를 생성하려고합니다. 그렇기 때문에 햄릿이 지정된 위치에서 URL 렌더링을 분리하고 싶습니다. 올바른 방향으로 포인터를 보내 주셔서 감사합니다!

답변

5

getUrlRenderParams을 사용하고 싶습니다. 이상하게도 IRC에서 관련 토론이있었습니다. 햄릿 템플릿은 첫 번째 인수로 URL 렌더링 함수를 사용하며 함수는 두 개의 매개 변수, 즉 형식 안전 URL과 쿼리 문자열 매개 변수 목록을 가져야합니다. getUrlRender는 쿼리 문자열 매개 변수를 사용하지 않는 함수를 반환하므로 대신 getUrlRenderParams가 필요합니다.

+0

고마워요! 그래서 적어도 나는 가까웠다. 특히 웹 디자인에 대해 많이 알지 못해서 문제가 심각하게 고민하고 있습니다. 예를 들어 Yesod Book에 이와 같은 내용이 언급되어 있지 않아 setMessage와 함께 링크를 사용하는 것이 좋지 않을 수도 있습니다. 그날 다른 사람이 당일에 묻는 질문은 실제로 이상한 우연의 일치입니다.하지만 저는 IRC를 직접 사용하지 않았으며, 저는 예소에 대해 더 자세히 알기 위해 스스로 고치기 만하고 있습니다. 아마 어딘가에 예가 있어야합니다. – Steffen