私は次のような形式があります:私のホームページにパラメータが利用できないハンドラからパラメータ化されたYesodフォームを処理するにはどうすればよいですか?
userForm :: UserId -> Form UserDemographics
userForm uid = renderDivs $ UserDemographics <$>
pure uid <*>
areq yearField "Year of birth" Nothing <*>
areq textField "Gender" Nothing <*>
areq countryField "Country of residence" Nothing <*>
areq boolField "Are you a computer programmer?" Nothing
を、私は記入UserId
でフォームを作るためにgenerateFormPost $ userForm (entityKey userEnt)
を使用しかし、私はAJAXでの入力を処理したいので、別々のHandler
は結果を取得します。フォーム。他のハンドラはUserId
へのアクセス権を持っていません。フォームをどのように処理すればよいですか?私はMaybe UserId
を受け入れるだけではなくUserId
またはrunFormPost
への呼び出しのための偽のUserId
を補うためにuserForm
の種類を変更することができ
postDemoFormR :: Handler RepJson
postDemoFormR = do
((formData, _), _) <- runFormPost $ userForm undefined
$(logDebug) $ pack $ show formData
return $ repJson()
が、それらの両方がハックされている:私は、エラーがスローされ、これを試してみました。これを行う簡単でクリーンな方法はありますか?
'requireAuthId'ソリューションは私の特別なケースで動作します。ありがとう!一般的なケースでは、本のフォームのセクションのように、 'フォーム::おそらくUserId - >フォームブログ'を意味し、 'UserId'フィールドに' maybe hiddenField pure mbUid'のようなものを使用することを意味しますか?したがって、HTMLページにあらかじめ入力されたフィールドとPOSTハンドラーの隠しフィールドがあるフォームを構築しています。 –
はい、そうです –