Привет Я новичок в Yesod и следую документации, чтобы сделать форму. В документации шаблон формы был создан в самом файле .hs. Но у меня есть отдельная деревушка, где я хочу настроить.Yesod Mform and hamlet
Я хочу получить доступ к «полям» в моем деревенском файле. Ожидаемый тип «generateFormPost» - это (xml, Enctype). Может ли кто-нибудь сказать мне, что я должен возвращать из «tableMform extra». Я думаю, что это должно быть в формате xml. Но я думаю, что я не должен использовать toWidget, как в приведенном ниже примере документации.
tableMform extra = do
fields <- forM lis (\(w,h) -> mopt intField "this is not used" (Just h))
return (fields) ---I know this line has the type error. Can anybody suggest how to deal with it
{-
--I am referring this code from yesod website to make my form. In this it was using runFormGet, but I want use generateFormPost and moreover it was creating a widget which is used in displaying the website. I don't want to create the widget here but in my hamlet file where the 'fields' is accessed via interpolation.
personForm :: Html -> MForm Handler (FormResult Person, Widget)
personForm extra = do
(nameRes, nameView) <- mreq textField "this is not used" Nothing
(ageRes, ageView) <- mreq intField "neither is this" Nothing
let personRes = Person <$> nameRes <*> ageRes
let widget = do
toWidget
[lucius|
##{fvId ageView} {
width: 3em;
}
|]
[whamlet|
#{extra}
<p>
Hello, my name is #
^{fvInput nameView}
\ and I am #
^{fvInput ageView}
\ years old. #
<input type=submit value="Introduce myself">
|]
return (personRes, widget)
-}
getHomeR :: Handler Html
getHomeR = defaultLayout $ do
-- Generate the form to be displayed
(fields, enctype) <- generateFormPost tableMform
let (fires,fiview) = unzip fields
$(widgetFile "layout")
|]
Пожалуйста, дайте мне знать, если есть какие-либо недоразумения. У меня есть идея о том, как получить форму из того, как это делается в документации, но я хочу использовать отдельный файл деревушки, так как я хочу настроить внешний вид формы.
Благодаря Sai
EDIT: К сожалению, я не был ясен. Я пытался создать Mform, где вместо создания макета формы в файле «.hs» я хотел указать макет в файле hamlet. Я сделал это через http://pastebin.com/fwpZsKXy. Но после этого я мог разбить его на два файла, как я хотел. Я решил эти ошибки. Спасибо anyways
Если вы получаете ошибки типа, рекомендуется включить сообщения об ошибках в вопрос. Я на самом деле не уверен, что вы пытаетесь достичь здесь, а сопоставление вашего кода с примером кода может привести к путанице (по крайней мере, с моей стороны). –