Я пытаюсь написать пользовательскую регистрационную форму Yesod. Проблема, с которой я сталкиваюсь, заключается в том, что когда она попадает в fvInput, похоже, что вместо Apph используется приложение. Я не совсем уверен, как это должно быть обработано, и я не могу найти терминологию для этого. Я пробовал подниматься по-разному в форме, и я могу только заставить его бросать разные ошибки. Кроме того, единственный раз, когда эта ошибка возникает, - это если у меня есть строка fvInput, но если я удалю, то не будет выброшена ошибка и она будет правильно скомпилирована.Yesod fvInput не может соответствовать «App» с «Auth»
Код:
registrationForm :: Html -> MForm (HandlerT Auth (HandlerT App IO)) (FormResult UserForm, Widget)
registrationForm extra = do
(emailRes, emailView) <- mreq textField "" Nothing
let userRes = UserForm <$> emailRes
let widget = do
[whamlet|
#{extra}
^{fvInput emailView}
<input type=Submit value="Registration">
|]
return (userRes, widget)
Ошибка:
Foundation.hs:169:30:
Couldn't match type ‘App’ with ‘Auth’
In the second argument of ‘(GHC.Base..)’, namely ‘toWidget’
In the expression: asWidgetT GHC.Base.. toWidget
In a stmt of a 'do' block:
(asWidgetT GHC.Base.. toWidget) (fvInput emailView)
Заранее спасибо за любую помощь!
- Редактировать
Ошибка с лифтом до MREQ:
Foundation.hs:166:49:
Couldn't match type ‘HandlerT Auth (HandlerT App IO)’
with ‘transformers-0.4.2.0:Control.Monad.Trans.RWS.Lazy.RWST
(Maybe (Env, FileEnv), HandlerSite m0, [Lang]) Enctype Ints m0’
Expected type: HandlerT
Auth (HandlerT App IO) (FormResult Text, FieldView App)
Actual type: MForm m0 (FormResult Text, FieldView App)
In the second argument of ‘($)’, namely ‘mreq textField "" Nothing’
In a stmt of a 'do' block:
(emailRes, emailView) <- lift $ mreq textField "" Nothing
Я попытался это в какой-то момент. Я думал, что это неправильно, потому что это еще одна ошибка. Я обновил сообщение выше, чтобы получить другую ошибку с добавлением лифта. Спасибо за помощь! – Lethjakman
Моя ошибка, лифт неправильный. Я обновлю ответ. –
Вот и все. Спасибо! – Lethjakman