2013-07-18 5 views
2

Yesod 1.2를 배우려고하는데 YesodAuth 인스턴스에 저장된 IO 및 정보에 액세스하는 방법을 알 수 없습니다.Yesod Form에서 입출력을 preform하는 방법은 무엇입니까? Yesod 1.2에서 aformM과 동등한 것은 무엇입니까?

예를 들어, Yesod 1.2에서 getCurrentTime을 호출하는 방법을 알 수 없습니다. Yesod 1.1에서 "aformM (liftIO getCurrentTime)"을 호출하여 양식 안의 현재 시간을 얻을 수 있습니다.

마찬가지로 Yesod 1.2에서는 "requireAuthId"를 호출하는 방법을 알 수 없습니다. Yesod 1.1

, 당신은 두 줄의 코드와 데이터의 두 비트는이 코드에서 < *> aformM로 시작 할 수 얻을 :

commentForm :: EntryId -> Form Comment 
commentForm entryId = renderDivs $ Comment 
    <$> pure entryId 
    <*> aformM (liftIO getCurrentTime) 
    <*> aformM requireAuthId 
    <*> areq textField (fieldSettingsLabel MsgCommentName) Nothing 
    <*> areq textareaField (fieldSettingsLabel MsgCommentText) Nothing 

나는 현재 코드에서이 질의에 의지 한 그 "commentForm"을 호출하지만 지금은 시간과 사용자의 ID를 여러 번 얻어야 만하는 것처럼 바보처럼 보입니다.

commentForm :: UTCTime -> UserId -> EntryId -> Form Comment 
commentForm theTime userId entryId = renderDivs $ Comment 
    <$> pure entryId 
    <*> pure theTime 
    <*> pure userId 
    <*> areq textField (fieldSettingsLabel MsgCommentName) Nothing 
    <*> areq textareaField (fieldSettingsLabel MsgCommentText) Nothing 

도움말! 나는 문서들을 여러 번 사용 해왔고 그저 내 머리를 감쌀 수 없다.

답변

4

웃기는 중, 나는 단지 몇 시간 전에이 올바른 방법을 포함하도록 블로그 예제를 업데이트하고 필요한 이유에 대한 설명을 포함 시켰습니다. 짧은 버전 :

lift (liftIO getCurrentTime) 
+1

AH, 인증 ID에는 "lift requireAuthId"를 사용하면됩니다. 나는 그것을 시도했다고 생각했지만, 나는 가질 필요가 없다고 생각합니다. – tim93422

+0

Yesod, 도서 및 다양한 포럼 및 우편 그룹에 대한 귀하의 도움에 감사드립니다. 당신과 당신과 함께 일하는 다른 사람들은 저를 정말로 감동 시켰습니다. – tim93422

+1

기쁨, 나는 당신이 yesod를 즐기고있어 기쁘다! –