2011-06-26 26 views
1

消化函數 - 大火創建HTML像<input type="text" id="foo" name="foo" /><label for="foo">Bar</label>,但我沒有找到任何標準的方式,例如添加<br />到最後。消化函數的表單元素

我想出了這一點:

br :: (Monad m) => HappstackForm m H.Html BlazeFormHtml() 
br = Common.label $ \_ -> do 
    createFormHtml $ \cfg -> do 
    H.br 

我可以<++其追加該做什麼,我期待它,但我不知道這是否是預期的方式嗎?

此外,如何擴展例如fieldsets。

回答

2

這是預期的方式,雖然br會有點清潔劑時,寫成:

br :: Monad m 
    => Form m i e BlazeFormHtml() 
br = view $ createFormHtml $ const H.br 

不管怎樣,我想這個定義是有點麻煩,所以我增加了一個viewHtml功能Text.Digestive.Forms.Html

viewHtml :: Monad m => a -> Form m i e (FormHtml a)() 
viewHtml = view . createFormHtml . const 

這在digestive-functors-0.1.0.1可用。使用這個新的組合器,你應該能夠使用<++ viewHtml H.br - 我希望這有助於。

+0

謝謝。我會嘗試查看字段集的工作原理,然後將其標記爲答案 – Masse