У меня есть следующий вид:.Как обработать параметризованную форму 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
На моей странице, я использую generateFormPost $ userForm (entityKey userEnt)
сделать форму с UserId
залитого Но я хочу, чтобы обрабатывать входной сигнал с помощью AJAX, поэтому отдельное Handler
получает результаты форма. Другой обработчик не имеет доступа к UserId
. Как обрабатывать форму? Я попробовал это, который выдает ошибку:
postDemoFormR :: Handler RepJson
postDemoFormR = do
((formData, _), _) <- runFormPost $ userForm undefined
$(logDebug) $ pack $ show formData
return $ repJson()
Я мог бы изменить тип userForm
«s принять Maybe UserId
вместо просто UserId
или сделать поддельную UserId
для вызова runFormPost
но оба тех писаки. Есть ли простой, чистый способ сделать это?
Решение 'requireAuthId' работает в моем конкретном случае, спасибо! В общем случае, как и в разделах «Формы» книги, вы имеете в виду «form :: Maybe UserId -> Form Blog' и использовать что-то вроде« возможно, hiddenField pure mbUid »для поля UserId? Таким образом, вы должны создать форму с предварительно заполненным полем на странице HTML, а скрытое поле - обработчиком POST. –
Да, это правильно –